打造 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(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() {
	    // 准备好相关信息 在调用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 })    // 打印
    }
}

 

 

 

 

你可能感兴趣的:(nodeJs)