日志 第三方 PINO
PINO 第三方依赖
安装依赖
bash
npm install nestjs-pino -S
配置
- 在 app.modules.ts 中配置
ts
import { Module } from "@nestjs/common";
import { AppController } from "./app.controller";
import { AppService } from "./app.service";
import { LoggerModule } from "nestjs-pino";
@Module({
imports: [LoggerModule.forRoot()],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
- 举例 在 app.controller.ts 中使用
ts
import { Controller, Get } from "@nestjs/common";
import { AppService } from "./app.service";
import { Logger } from "nestjs-pino";
@Controller()
export class AppController {
constructor(
private readonly appService: AppService,
private readonly logger: Logger
) {}
@Get()
getHello(): string {
this.logger.log("Hello World!");
return this.appService.getHello();
}
}
美化插件
- 安装完插件
bash
pnpm i pino-pretty -S
- 找到引入 pino 的部分,传递参数
ts
import { Module } from "@nestjs/common";
import { AppController } from "./app.controller";
import { AppService } from "./app.service";
import { LoggerModule } from "nestjs-pino";
@Module({
imports: [
LoggerModule.forRoot({
pinoHttp: {
// Use pretty-printed JSON
transport: {
target: "pino-pretty",
options: {
colorize: true,
},
},
},
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
这样返回的就不是个字符串了,而是美化过的 json 格式
pino-roll(生产环境)
ts
pnpm i pino-roll -S
使用
ts
import { Module } from "@nestjs/common";
import { AppController } from "./app.controller";
import { AppService } from "./app.service";
import { LoggerModule } from "nestjs-pino";
import { mkdir } from "fs";
import { join } from "path";
@Module({
imports: [
LoggerModule.forRoot({
pinoHttp: {
// Use pretty-printed JSON
transport: {
targets: [
{
level: "info",
target: "pino-pretty",
options: {
colorize: true,
},
},
{
level: "info",
target: "pino-roll",
options: {
file: join("log", "log.txt"), // 路径
frequency: "daily", // 日期
mkdir: true,
size: "0.1k", // 文件大小 k为单位
},
},
],
},
},
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}