Nodejs Nestjs日志管理插件nestjs-pino的使用

Nodejs Nestjs日志管理插件nestjs-pino的使用
nestjs-pino 是一个用于 NestJS 的日志管理插件,它基于 pino 日志库。这个插件可以帮助你更好地管理和配置日志记录。以下是如何在 NestJS 项目中安装和配置 nestjs-pino 的步骤。

安装

首先,你需要安装 nestjs-pinopino

npm install [@golevelup](/user/golevelup)/nestjs-pino pino

或者如果你使用的是 Yarn:

yarn add [@golevelup](/user/golevelup)/nestjs-pino pino

配置

  1. 创建日志配置文件(可选但推荐):

    创建一个名为 logger.config.ts 的文件,内容如下:

    import { Module } from '[@nestjs](/user/nestjs)/common';
    import { PinoLoggerModule } from '[@golevelup](/user/golevelup)/nestjs-pino';
    
    [@Module](/user/Module)({
      imports: [
        PinoLoggerModule.forRoot({
          transport: {
            target: 'pino-pretty',
            options: {
              colorize: true,
            },
          },
        }),
      ],
    })
    export class LoggerModule {}
    
  2. 在主模块中引入 LoggerModule

    在你的主模块(通常是 app.module.ts)中引入 LoggerModule

    import { Module } from '[@nestjs](/user/nestjs)/common';
    import { AppController } from './app.controller';
    import { AppService } from './app.service';
    import { LoggerModule } from './logger.config'; // 假设你的配置文件在这个路径下
    
    [@Module](/user/Module)({
      imports: [LoggerModule],
      controllers: [AppController],
      providers: [AppService],
    })
    export class AppModule {}
    
  3. 使用日志服务

    现在你可以在任何服务或控制器中注入并使用日志服务:

    import { Controller, Get } from '[@nestjs](/user/nestjs)/common';
    import { Logger } from '[@golevelup](/user/golevelup)/nestjs-pino';
    
    [@Controller](/user/Controller)()
    export class AppController {
      constructor(@Logger() private readonly logger: any) {}
    
      @Get()
      getHello(): string {
        this.logger.info('This is an info log');
        this.logger.debug('This is a debug log');
        this.logger.error('This is an error log');
        return 'Hello World!';
      }
    }
    

高级配置

你可以通过传递更多的选项来自定义日志的行为,例如日志级别、文件输出等。参考 nestjs-pino 的文档获取更多高级配置信息。

注意事项

  • 确保你的 @Logger() 装饰器正确导入。
  • 根据你的需求调整日志格式和输出位置。

通过以上步骤,你应该能够成功地在 NestJS 项目中使用 nestjs-pino 进行日志管理。


3 回复

当然,了解nestjs-pino插件可以让你的日志管理变得既高效又优雅。首先,你需要安装它:

npm install --save @golevelup/nestjs-pino pino-pretty

然后,在你的应用模块中配置Pino:

import { Module } from '@nestjs/common';
import { APP_INTERCEPTOR } from '@nestjs/core';
import { PinoLoggerInterceptor, PinoLoggerModule } from '@golevelup/nestjs-pino';

@Module({
  imports: [PinoLoggerModule.forRoot()],
  providers: [
    {
      provide: APP_INTERCEPTOR,
      useClass: PinoLoggerInterceptor,
    },
  ],
})
export class AppModule {}

现在,你可以在服务或控制器中注入PinoLogger来记录信息了:

import { Injectable, Logger } from '@nestjs/common';
import { PinoLogger } from '@golevelup/nestjs-pino';

@Injectable()
export class AppService {
  constructor(private readonly logger: PinoLogger) {}

  getHello(): string {
    this.logger.info('这是一条信息');
    return 'Hello World!';
  }
}

这样,你就可以享受结构化日志带来的便利了!


nestjs-pino 是一个用于 NestJS 应用的日志管理插件,基于 pino 日志库。下面是如何在你的 NestJS 项目中安装和配置 nestjs-pino 的步骤。

安装

首先,你需要安装 nestjs-pino@types/pino(可选,但推荐用于类型检查):

npm install nestjs-pino @types/pino

配置

然后,在你的应用中配置 nestjs-pino。通常,你会在主文件(如 main.tsapp.module.ts)中进行配置。

main.ts 中配置

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { PinoLoggerProvider } from 'nestjs-pino';

async function bootstrap() {
  const app = await NestFactory.create(AppModule, {
    logger: new PinoLoggerProvider({
      // 设置 pino 日志级别
      level: process.env.LOG_LEVEL || 'info',
      // 设置输出格式等选项
      prettyPrint: process.env.NODE_ENV !== 'production'
    }),
  });

  await app.listen(3000);
}
bootstrap();

AppModule 中配置

你也可以选择在模块级别进行配置:

import { Module } from '@nestjs/common';
import { APP_INITIALIZER, Logger } from '@nestjs/core';
import { PinoLoggerProvider } from 'nestjs-pino';

@Module({
  imports: [],
  controllers: [],
  providers: [
    {
      provide: APP_INITIALIZER,
      useFactory: (loggerProvider: PinoLoggerProvider) => () => {
        return loggerProvider.init();
      },
      inject: [PinoLoggerProvider],
      multi: true,
    },
  ],
})
export class AppModule {}

使用日志

现在,你可以在任何服务或控制器中注入并使用 Logger

import { Controller, Get } from '@nestjs/common';
import { Logger } from 'nestjs-pino';

@Controller('example')
export class ExampleController {
  constructor(private readonly logger: Logger) {}

  @Get()
  getHello(): string {
    this.logger.info('This is an info log.');
    this.logger.error('This is an error log.');
    return 'Hello World!';
  }
}

通过以上配置,你可以轻松地为你的 NestJS 应用添加详细的日志记录功能。

nestjs-pino 是一个用于 NestJS 的日志管理插件,基于 Pino 日志库。首先安装该插件:

npm install @golevelup/nestjs-pino pino-pretty --save

然后,在主应用模块(通常是 app.module.ts)中配置:

import { PinoModule } from '@golevelup/nestjs-pino';

@Module({
  imports: [
    PinoModule.forRoot({
      transport: {
        target: 'pino-pretty',
        options: {
          colorize: true,
        },
      },
    }),
    // 其他模块
  ],
})
export class AppModule {}

现在,你可以在任何服务或控制器中注入 Logger 并使用它来记录信息。例如:

import { Logger } from '@golevelup/nestjs-pino';

@Injectable()
export class AppService {
  constructor(private readonly logger: Logger) {}

  doSomething() {
    this.logger.log('Doing something');
  }
}

这将使你的日志输出更加结构化和易于管理。

回到顶部