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

使用`heroku run`执行命令时日志缺失问题求助

解决Heroku Run命令输出无法进入日志系统的问题

方法1:使用run:detached启动后台dyno

这是最直接的方案,和Heroku Scheduler的运行机制一致——启动一个独立的、非交互式的一次性dyno,其stdout/stderr会被Heroku日志系统正常捕获,可通过heroku logs或logdrain查看。

执行命令:

heroku run:detached python -c "print('hi')" --app my-app

之后在另一个终端运行heroku logs --tail --app my-app,就能看到输出的"hi",同时logdrain(如Papertrail)也能同步捕获。

方法2:重定向输出到日志系统(保留交互式场景)

如果需要保持本地终端能看到输出,同时让日志系统捕获内容,可以通过管道将输出转发给logger命令(Heroku dyno默认预装该工具):

执行命令:

heroku run "python -c 'print(\"hi\")' 2>&1 | tee >(logger)" --app my-app
  • 2>&1:将stderr合并到stdout
  • tee:保留本地终端输出
  • >(logger):将输出同时发送到Heroku日志系统

为什么默认heroku run无法捕获输出?

heroku run默认是交互式模式,会在本地终端和dyno之间建立双向通信通道,所有stdout/stderr直接回传到本地,不会进入Heroku的集中日志系统。而Scheduler或run:detached启动的是非交互式后台dyno,其输出会像普通Web/Worker dyno一样被日志系统收集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:20:31