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

求助: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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:42:06