我在Heroku上运行 worker dyno ,它使用rufus-scheduler来完成一些工作。
在工作期间,它会将一些消息记录到控制台(使用简单的put),但是这些消息只能不可靠地转移到Heroku日志和Logentries等附加组件。
当我重新启动dyno时,在进程退出之前,所有丢失的控制台消息都会打印在控制台上。 这种行为是否与某些缓冲有关?我怎么能绕过这个呢? 或者它与rufus-scheduler产生线程中的工作有关吗?
我已经阅读了一些关于防止Heroku文档中基于机架的应用程序缓冲的选项,但不是工作人员dynos。
关心Stefan
答案 0 :(得分:1)
请阅读https://devcenter.heroku.com/articles/logging#writing-to-your-log
我猜你只是在写控制台。你有没有试过添加
$stdout.sync = true
$stderr.sync = true # eventually
到您的config.ru或应用程序的头部?
您可以尝试执行
,而不是将全局同步设置为trueputs "logging... hello world..."
puts "oh and, this is what happened"
$stdout.flush
每次伐木后冲洗,但那很无聊。
如果你没有这样记录,请在你的问题中解释,不要依赖读者的占卜能力。