import { DynamicModule } from '@nestjs/common'; import { LoggerModule } from 'nestjs-pino'; /** * 日志配置:pino 结构化日志。 * - stdout 默认开启 * - 文件输出默认关闭,由环境变量 LOG_FILE_ENABLED=true 开启 * - 级别 LOG_LEVEL(默认 info)、路径 LOG_FILE_PATH(默认 logs/app.log) */ export function createLoggerModule(): DynamicModule { const level = process.env.LOG_LEVEL ?? 'info'; const fileEnabled = process.env.LOG_FILE_ENABLED === 'true'; const filePath = process.env.LOG_FILE_PATH ?? 'logs/app.log'; const pinoHttp = fileEnabled ? { level, transport: { targets: [ { target: 'pino/file', options: { destination: 1 } }, // stdout { target: 'pino-roll', options: { file: filePath, size: '10m', limit: { count: 10 } } }, // 文件按大小轮转 ], }, } : { level }; return LoggerModule.forRoot({ pinoHttp }); }