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

Fastify中无法修改Pino默认{ level: info }配置的问题求助

解决Fastify中Pino日志Level不生效的问题

你遇到的问题根源在于:Pino的全局日志级别默认是info,这个级别会优先过滤所有日志;你在transport targets里设置的level只是传输层的二次过滤规则,无法覆盖全局级别。要解决这个问题,不需要使用disableRequestLogging,只需在Pino配置的根层级添加level字段即可。

修改配置步骤

修改pino/config/dev.js,在导出的配置对象中添加根级的level:

const targets = [
  {
    target: 'pino-pretty',
    options: {
      name: 'dev-terminal',
      level: 'error', // 终端仅输出error及以上级别日志
      colorize: true,
      levelFirst: true,
      include: 'level,time,',
      translateTime: 'yyyy-mm-dd HH:MM:ss Z',
    },
  },
  {
    target: 'pino/file',
    options: {
      name: 'dev-local-file',
      level: 'fatal', // 文件仅输出fatal级别日志
      destination: './pino/logs/dev.log',
      mkdir: true,
    },
  },
]

export default {
  level: 'error', // 全局日志级别设为error,过滤掉info及以下的日志
  transport: {
    targets,
  },
}

原理说明

  1. 全局级别:根级的level是Pino实例的全局过滤规则,只有级别大于等于该值的日志才会被生成,进入后续的传输流程。这里设为error后,info级别的日志(比如Fastify默认的请求日志)会被直接过滤,不会传到transport层。
  2. 传输层级别:每个target里的level是在全局过滤之后的二次过滤,比如文件传输设为fatal,会在全局输出的error、fatal日志中,仅保留fatal级别写入文件。

如果需要保留某些info级别的自定义日志,只需将全局level设为info,传输层的level会自动过滤掉对应级别以下的日志,这样既保留自定义info日志,又不会输出Fastify默认的info级请求日志到终端或文件。

内容的提问来源于stack exchange,提问作者Georgii Galechyan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:31:10