打造 NestJS 日志系统

NestJS项目日志打印方法

方法一:(推荐)建立一个基于 Winston ( Nest官方推荐,或其他类似日志工具 ) 的 Logger 公用基础类。

    基础类的作用主要是集中配置,比如日志的格式化、最大长度、日志文件输出位置、命名和定时清理等。

    然后通过继承或者实例化都行,总之在需要打印的地方,调用其打印方法,实现打印动作。

方法二: Nestjs自带的打印方法:

import Logger from @nestjs/common    // 引入
new Logger('contextName').log('message')    // 使用

方法三:console.log:最原始,不够高级优雅

 

系统日志配置入口

打印 Nest 系统日志:需要 implement  LoggerService 接口 ( 配置入口 main.js )

import Logger from @nestjs/common
const app = await NestFactory.create<NestExpressApplication>(ApplicationModule, {
    logger: new Logger()    // implement of interface LoggerService
  })

 

打印 TypeORM 日志:需要 implement  ( typeorm 的 ) Logger 接口。

import { Logger } from 'typeorm'
export class OrmLogger extends BasicLogger implements Logger

TypeOrmModule.forRoot({
    logger: new OrmLogger()
})

 

自定义处日志打印

一个通过继承基于Winston的基础类实现 自定义 日志打印的例子。

export class GrpcService extends BasicLogger {
    constructor() {
        super('grpc')    // 这里是设置日志的 context 名称
      }
    async call<T = any>() {
	    // 准备好相关信息 在调用grpc的时候,进行日志打印
	    const print = this.logger["info"]	// this.logger 是继承自 BasicLogger 的打印动作方法
            const message = `${this.requestId} ${code} "${msg}" ${bytes}bytes ${cost}ms`
	    print(message, { label: cmd, autoLabelCase: false, extra })    // 打印
    }
}

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值