Nodejs Nestjs日志管理插件nestjs-pino的使用
Nodejs Nestjs日志管理插件nestjs-pino的使用nestjs-pino
是一个用于 NestJS 的日志管理插件,它基于 pino
日志库。这个插件可以帮助你更好地管理和配置日志记录。以下是如何在 NestJS 项目中安装和配置 nestjs-pino
的步骤。
安装
首先,你需要安装 nestjs-pino
和 pino
:
npm install [@golevelup](/user/golevelup)/nestjs-pino pino
或者如果你使用的是 Yarn:
yarn add [@golevelup](/user/golevelup)/nestjs-pino pino
配置
-
创建日志配置文件(可选但推荐):
创建一个名为
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 {}
-
在主模块中引入 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 {}
-
使用日志服务:
现在你可以在任何服务或控制器中注入并使用日志服务:
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
进行日志管理。
当然,了解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.ts
或 app.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');
}
}
这将使你的日志输出更加结构化和易于管理。