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

Nodejs Nestjs日志管理插件@nestjs/pino的使用
[@nestjs](/user/nestjs)/pino 是一个用于 NestJS 的日志管理插件,它基于 pino 日志库。下面是如何在 NestJS 项目中使用 [@nestjs](/user/nestjs)/pino 插件的步骤。

安装依赖

首先,你需要安装 [@nestjs](/user/nestjs)/pinopino

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

配置日志服务

在你的 NestJS 项目中配置 [@nestjs](/user/nestjs)/pino 插件。你可以在 app.module.ts 或创建一个新的模块中进行配置。

示例:在 app.module.ts 中配置

import { Module } from '[@nestjs](/user/nestjs)/common';
import { APP_INTERCEPTOR } from '[@nestjs](/user/nestjs)/core';
import { PinoLoggerModule, PinoLoggerInterceptor } from '[@nestjs](/user/nestjs)/pino';

@Module({
  imports: [
    PinoLoggerModule.forRoot({
      pinoHttp: {
        level: 'info',
        transport: {
          target: 'pino-pretty',
        },
      },
    }),
  ],
  providers: [
    {
      provide: APP_INTERCEPTOR,
      useClass: PinoLoggerInterceptor,
    },
  ],
})
export class AppModule {}

这里我们配置了日志级别为 info,并使用了 pino-pretty 来美化输出的日志格式。

使用日志服务

现在,你可以在任何服务或控制器中注入 PinoLogger 并使用它来记录日志。

示例:在服务中使用

import { Injectable, Logger } from '[@nestjs](/user/nestjs)/common';
import { PinoLogger } from '[@nestjs](/user/nestjs)/pino';

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

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

自定义日志格式

如果你想自定义日志的格式,可以修改 pinoHttp 的配置项。例如,你可以添加自定义字段:

import { Module } from '[@nestjs](/user/nestjs)/common';
import { APP_INTERCEPTOR } from '[@nestjs](/user/nestjs)/core';
import { PinoLoggerModule, PinoLoggerInterceptor } from '[@nestjs](/user/nestjs)/pino';

@Module({
  imports: [
    PinoLoggerModule.forRoot({
      pinoHttp: {
        level: 'info',
        formatters: {
          level(label, number) {
            return { level: `${label.toUpperCase()} (${number})` };
          },
          bindings(bound) {
            return bound;
          },
        },
        customLevels: {
          trace: 10,
          debug: 20,
          info: 30,
          warn: 40,
          error: 50,
          fatal: 60,
        },
      },
    }),
  ],
  providers: [
    {
      provide: APP_INTERCEPTOR,
      useClass: PinoLoggerInterceptor,
    },
  ],
})
export class AppModule {}

通过以上步骤,你就可以在 NestJS 应用中使用 [@nestjs](/user/nestjs)/pino 插件来管理和记录日志了。


3 回复

当然,@nestjs/pino 是一个用于 NestJS 项目的日志管理插件,它基于 Pino 这个高性能的日志库。首先,你需要安装这个插件:

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

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

import { PinoHttp } from '[@nestjs](/user/nestjs)/pino';

@Module({
  providers: [
    {
      provide: APP_INTERCEPTOR,
      useClass: PinoHttp,
    },
  ],
})
export class AppModule {}

现在,你可以在任何地方注入 Logger 来记录信息了:

import { Logger } from '[@nestjs](/user/nestjs)/common';

@Controller()
export class AppController {
  private readonly logger = new Logger(AppController.name);

  @Get()
  getHello(): string {
    this.logger.log('这是一条日志消息!');
    return 'Hello World!';
  }
}

这样,你就有了一个既好用又快速的日志系统!如果想调整日志级别或格式,可以进一步配置 Pino 的选项。祝你编程愉快!


@nestjs/pino 是一个用于 NestJS 应用的日志管理插件,它基于 pino 这个高性能的 Node.js 日志库。使用这个插件可以帮助你更方便地进行日志记录和管理。

安装

首先,你需要安装 @nestjs/pinopino

npm install @nestjs/pino pino

配置

接下来,需要配置 @nestjs/pino 模块。你可以在你的主应用模块(通常是 app.module.ts)中进行配置。

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

@Module({
  imports: [
    PinoLoggerModule.forRoot({
      pinoHttp: {
        level: 'info',
        transport: {
          target: 'pino-pretty'
        }
      }
    })
  ],
  providers: [
    {
      provide: APP_INTERCEPTOR,
      useClass: PinoLoggerInterceptor,
    },
  ],
})
export class AppModule {}

在这个例子中,我们配置了日志级别为 info,并且使用了 pino-pretty 来美化输出。

使用日志

一旦配置完成,你就可以在服务或控制器中使用日志了。

import { Injectable } from '@nestjs/common';

@Injectable()
export class AppService {
  logInfo() {
    this.logger.log('这是 info 级别的日志');
  }

  logError() {
    this.logger.error('这是 error 级别的日志');
  }
}

或者直接通过注入 Pino 实例来使用:

import { Injectable } from '@nestjs/common';
import { Logger } from 'pino';

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

  doSomething() {
    this.logger.info('这是一条 info 日志');
    this.logger.error(new Error('这是一条 error 日志'));
  }
}

自定义日志格式

如果你想自定义日志的格式,可以在配置 PinoLoggerModule 的时候指定一个自定义的 pino-http 配置对象。例如,你可以改变日志的时间戳格式:

import { Module } from '@nestjs/common';
import { PinoLoggerModule } from '@nestjs/pino';

@Module({
  imports: [
    PinoLoggerModule.forRoot({
      pinoHttp: {
        timestamp: () => `,"time":"${new Date().toISOString()}"`,
      },
    }),
  ],
})
export class AppModule {}

以上就是使用 @nestjs/pino 在 NestJS 应用中进行日志管理的基本步骤。希望这些信息对你有帮助!

@nestjs/pino 是一个用于 NestJS 的日志管理插件,基于 Pino。首先安装依赖:

npm install @nestjs/pino pino pino-http

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

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

@Module({
  imports: [
    PinoLoggerModule.forRoot({
      transport: {
        target: 'pino-pretty',
      },
    }),
  ],
  providers: [],
})
export class AppModule {}

这将为你的应用添加 Pino 日志支持。你还可以根据需要自定义 Pino 配置。

回到顶部