可靠的Heroku控制台记录

时间:2013-10-01 14:28:30

标签: ruby logging heroku rufus-scheduler

我在Heroku上运行 worker dyno ,它使用rufus-scheduler来完成一些工作。

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

当我重新启动dyno时,在进程退出之前,所有丢失的控制台消息都会打印在控制台上。 这种行为是否与某些缓冲有关?我怎么能绕过这个呢? 或者它与rufus-scheduler产生线程中的工作有关吗?

我已经阅读了一些关于防止Heroku文档中基于机架的应用程序缓冲的选项,但不是工作人员dynos。

关心Stefan

1 个答案:

答案 0 :(得分: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

每次伐木后冲洗,但那很无聊。

如果你没有这样记录,请在你的问题中解释,不要依赖读者的占卜能力。