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

在Heroku中使用Winston日志器:如何访问生成的日志文件?

访问Heroku上的Winston日志文件

首先要明确:Heroku的dyno文件系统是临时且短暂的,你通过Winston写入本地的${dbState}-error.log和${dbState}-combined.log文件,只会存在于当前运行的dyno实例中,一旦dyno重启(比如部署更新、自动缩放、休眠唤醒),这些文件就会被清除,而且无法直接通过文件系统访问这些文件。

你可以通过以下几种方式获取和查看日志:

1. 使用Heroku CLI查看日志

Heroku会收集应用的标准输出(stdout)和标准错误(stderr)流日志,你可以通过Heroku CLI命令操作:

  • 查看最近的日志:
    heroku logs
    
  • 实时跟踪日志(类似本地tail -f效果):
    heroku logs --tail
    
  • 过滤特定级别日志(比如仅查看error级内容):
    heroku logs --source app --level error
    

2. 修改Winston配置,将日志输出到标准流

你的当前配置里已经通过logger.stream实现了部分控制台输出,但可以直接调整Winston的transports,让日志直接输出到stdout/stderr,确保Heroku能自动收集:
修改transports部分,添加Console传输器:

const logger = createLogger({
  format: customFormat,
  transports: [
    new transports.File({ filename: `${dbState}-error.log`, level: 'error' }),
    new transports.File({ filename: `${dbState}-combined.log`, maxsize: 10000000 }),
    // 添加Console传输器,将日志同步输出到标准流
    new transports.Console({
      level: 'info',
      format: customFormat
    })
  ],
});

这样日志会同时写入本地临时文件和标准流,你可以通过Heroku CLI随时查看这些日志内容。

3. 使用Heroku日志附加组件实现持久化存储

如果需要长期保存日志、避免dyno重启丢失,可以使用Heroku官方的日志附加组件,这类组件会自动收集并持久化应用日志,支持检索、过滤和告警等功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 22:52:04