通过' heroku run '运行的命令缺少日志



当我使用heroku run运行命令时,stdout和stderr似乎只会转到我运行命令的终端。它们不能通过heroku logs或logdrain查看。

是否有一种方法可以使heroku run的输出与来自调度程序的日志相同?

重现步骤

在一个终端中,运行:

$ heroku logs --tail --app my-app

在另一个终端:

$ heroku run python -c "print('hi')" --app my-app Running python -c print('hi')

我的期望:

字"hi"应该通过logdrain以及heroku logs在papertrail中可见-t

实际情况:

输出到终端,它不会在logdrain或其他终端结束。我在日志中得到的只是关于进程启动和退出的元数据。缺少实际的标准输出和标准错误内容。

记录如下:

一次性dynos运行连接到您的终端,STDINSTDOUT使用逐个字符的TCP连接。这允许您使用像控制台一样的交互式进程。由于STDOUT将进入您的终端,因此在应用程序日志中记录的唯一事情是dyno的启动和关闭。

你可以使用heroku run:detached,如果你想从一个一次性的动态输出被捕获到你的日志中,例如

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

当然,这并不适合任何互动的东西,但我不确定记录互动会话是否有意义。

最新更新