本章介绍如何在NestJS中实现日志功能。 什么是日志,简单来说就是程序运行时的黑匣子,它按照时间顺序记录了系统内发生的事件,错误,警告以及状态变化。
1.安装
执行命令pnpm add nestjs-pino pino-http
pnpm add pino``pnpm add pino-pretty
2.导入
import { LoggerModule } from 'nestjs-pino';
@Module({
imports: [LoggerModule.forRoot()],
})
class AppModule {}
3.启动app logger
进入main.ts文件,加上代码
import { Logger } from 'nestjs-pino';
app.useLogger(app.get(Logger));
4.对日志做一些简单的配置
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { TodosModule } from './todos/todos.module';
import { MikroOrmModule } from '@mikro-orm/nestjs';
import { UserModule } from './user/user.module';
import mikroConfig from '../mikro-orm.config';
import { LoggerModule } from 'nestjs-pino';
@Module({
imports: [
TodosModule,
MikroOrmModule.forRoot(mikroConfig),
UserModule,
LoggerModule.forRoot({
pinoHttp: {
transport: {
targets: [
{ target: 'pino-pretty', options: { colorize: true } },
{
target: 'pino/file',
options: { destination: 'logs/app.log', mkdir: true },
},
],
},
},
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
这里的配置项可以在src下创建config文件夹,创建pino.ts文件,将配置项剥离:
``ts export const pinoConfig = { transport: { targets: [ { target: 'pino-pretty', options: { colorize: true } }, { target: 'pino/file', options: { destination: 'logs/app.log', mkdir: true }, }, ], }, };