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

AlmaLinux上Fastify+Pino日志时区与系统时区不一致的解决求助

解决Fastify+Pino日志时区与系统时区不一致的问题

问题分析

系统时区为Asia/Almaty(UTC+05),但Pino日志输出显示为UTC+06,核心问题出在Pino-Pretty的时间转换配置或环境变量生效逻辑上。

修复方案

1. 直接在Pino-Pretty配置中指定时区

修改Fastify的日志配置,在pino-pretty的选项中添加timezone参数,强制指定时区:

logger: {
  level: 'info',
  transport: { 
    target: 'pino-pretty',
    options: {
      translateTime: 'yyyy-mm-dd HH:MM:ss Z',
      timezone: 'Asia/Almaty'
    },
  }
}

该参数会跳过系统/进程时区的自动检测,直接使用指定时区转换日志时间。

2. 验证PM2的TZ环境变量是否生效

PM2配置中的TZ可能未正确传递给应用进程,可按以下步骤排查:

  • 进入PM2应用的交互式控制台:pm2 attach <app-name>,执行console.log(process.env.TZ)查看当前进程的时区变量
  • 如果变量未生效,调整PM2配置文件,确保env配置在apps数组的应用对象内:
{
  "apps": [
    {
      "name": "your-app-name",
      "script": "app.js",
      "env": {
        "TZ": "Asia/Almaty"
      }
    }
  ]
}

修改后重启应用:pm2 restart <app-name>

3. 替换SYS关键字为具体时区标识

若坚持使用translateTime的前缀格式,可将SYS替换为目标时区:

translateTime: 'Asia/Almaty:yyyy-mm-dd HH:MM:ss Z'

这种方式会直接基于指定时区生成时间字符串,无需依赖进程时区。

验证修复

重启应用后触发日志输出,检查日志中的时区是否显示为GMT+0500,与系统时区一致即修复完成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 21:33:16