求助:pino-pretty仅输出字符串不显示数字的问题
解决Pino-Pretty不显示数字类型
msg字段的问题 Pino-Pretty默认仅渲染字符串类型的msg字段,这就是日志中数字77未被展示的原因。以下两种方法可以解决这个问题:
方法1:在日志生成时转换为字符串
在代码中生成日志时,将数字类型的msg显式转换为字符串:
const logger = require('pino')(); logger.info({ msg: String(77) }); // 将数字转为字符串后传入
这样生成的日志msg字段就是字符串类型,Pino-Pretty会正常展示。
方法2:自定义Pino-Pretty的消息格式化规则
创建一个配置文件(例如pino-pretty.config.js),添加自定义格式化函数将数字类型的msg转为字符串:
module.exports = { messageFormat: (log) => { // 如果msg是数字,转换为字符串返回 return typeof log.msg === 'number' ? String(log.msg) : log.msg; } };
然后使用该配置运行命令:
cat app.log | npx pino-pretty --config pino-pretty.config.js
或者在代码中直接配置Pino的transport:
const pino = require('pino'); const logger = pino({ transport: { target: 'pino-pretty', options: { messageFormat: (log) => typeof log.msg === 'number' ? String(log.msg) : log.msg } } });
应用上述任一方法后,日志输出会变为:
[12:01:56.478] INFO (2484): 77 [12:01:56.478] INFO (2484): 42
内容的提问来源于stack exchange,提问作者Mrigank Vallabh
相关产品推荐
相关产品推荐

