You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用nestjs-pino实现日志文件轮转功能?

使用nestjs-pino实现日志文件轮转功能

要在nestjs-pino中实现类似winston-daily-rotate-file的日志轮转,无需依赖系统级的logrotate,直接用Pino生态的专用包就能搞定,下面是两种可靠的方案:

方案一:使用官方@pinojs/file-transport(推荐)

这是Pino官方维护的文件传输工具,原生支持日志轮转,稳定性更好。

  1. 安装依赖
npm install @pinojs/file-transport
# 或用yarn
yarn add @pinojs/file-transport
# 或pnpm
pnpm add @pinojs/file-transport
  1. 配置NestJS日志模块
    在app.module.ts中配置LoggerModule,传入轮转相关参数:
import { Module } from '@nestjs/common';
import { LoggerModule } from 'nestjs-pino';
import { fileTransport } from '@pinojs/file-transport';

@Module({
  imports: [
    LoggerModule.forRoot({
      transport: fileTransport({
        options: {
          destination: './logs/app.log', // 基础日志文件路径
          mkdir: true, // 自动创建不存在的日志目录
          rotate: {
            enabled: true,
            interval: 'daily', // 按天轮转,可选hourly/weekly等
            maxSize: '10m', // 单个日志文件最大10MB,超出即轮转
            maxFiles: '7d', // 保留最近7天的日志
            filename: './logs/app-%DATE%.log', // 轮转后的文件名格式,%DATE%会替换为日期(如2024-05-20)
          },
        },
      }),
    }),
  ],
})
export class AppModule {}

方案二:使用pino-rotate第三方包

如果偏好更轻量的实现,可以用社区维护的pino-rotate包:

  1. 安装依赖
npm install pino-rotate
# 或yarn add pino-rotate
  1. 配置日志模块
import { Module } from '@nestjs/common';
import { LoggerModule } from 'nestjs-pino';

@Module({
  imports: [
    LoggerModule.forRoot({
      transport: {
        target: 'pino-rotate',
        options: {
          filename: './logs/app.log',
          frequency: 'daily', // 每天轮转一次
          maxSize: '10m', // 单个文件上限10MB
          maxFiles: 7, // 保留最多7个轮转文件
          mkdir: true,
        },
      },
    }),
  ],
})
export class AppModule {}

注意事项

  • 确保应用对日志目录有读写权限,mkdir: true会自动创建目录,避免启动报错
  • 可以根据业务需求调整interval/frequency、maxSize、maxFiles等参数,比如按小时轮转或保留更多历史日志

内容的提问来源于stack exchange,提问作者Gihoon Eom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 07:05:06