2

我在 Heroku 上运行一个工人测功机,它使用 rufus-scheduler 来做一些工作。

在工作期间,它会将一些消息记录到控制台(使用简单的 puts),但是这些消息只是不可靠地传输到 Heroku 日志和 Logentries 等附加组件。

当我重新启动测功机时,所有丢失的控制台消息都会在进程退出之前打印在控制台上。这种行为是否与某些缓冲有关?我该如何规避这个?还是与 rufus-scheduler 在 Threads 中产生工作有关?

我已经在 Heroku 文档中阅读了一些关于防止缓冲基于 Rack 的应用程序的选项的内容,但不适用于工作人员测功机。

问候斯特凡

4

1 回答 1

1

只需阅读https://devcenter.heroku.com/articles/logging#writing-to-your-log

我猜你只是在写控制台。您是否尝试添加

$stdout.sync = true
$stderr.sync = true # eventually

到您的 config.ru 或在您的应用程序的头部?

除了将同步设置为全局 true 之外,您还可以尝试做

puts "logging... hello world..."
puts "oh and, this is what happened"
$stdout.flush

在每条日志记录之后刷新,但这很无聊。

如果您不以这种方式登录,请在您的问题中解释,不要指望读者的占卜能力。

于 2013-10-01T21:50:33.767 回答