Node.js中Pino Logger输出未显示配置的完整时间戳问题
解决Pino + pino-pretty时间戳缺失日期的问题
问题原因
你的配置中同时设置了translateTimestamp和timestamp参数,导致pino-pretty的时间戳处理逻辑冲突:timestamp会让pino-pretty自行生成仅含时分秒的时间戳,而非转换Pino原生输出的完整time字段;同时transport选项中重复设置的levels也可能干扰解析流程。
修复步骤
- 移除冲突的
timestamp选项:保留translateTimestamp来转换Pino生成的完整时间字段,确保日期部分被正确解析。 - 删除transport选项中重复的
levels配置:Pino的自定义级别会自动传递给pino-pretty,无需重复设置。 - 修正时间戳格式的占位符:月份需使用大写
MM(小写mm代表分钟),保证格式解析准确。
修改后的配置代码:
const levels = { http: 10, debug: 20, info: 30, warn: 40, error: 50, fatal: 60, }; const logger = pino({ level: 'info', useOnlyCustomLevels: true, customLevels: levels, transport: { target: 'pino-pretty', options: { colorize: true, colorizeObjects: true, translateTimestamp: "SYS:yyyy-MM-dd HH:mm:ss.l", minimumLevel: 'info', levelFirst: true, ignore: 'pid,hostname', } } })
验证效果
调用logger.info('This is a log message')后,输出将包含完整的日期和时间:
INFO [2024-05-20 18:06:00.159]: This is a log message
内容的提问来源于stack exchange,提问作者BreenDeen
相关产品推荐
相关产品推荐

