在Rails应用程序中记录线程内部

Mar*_*ing 9 multithreading ipc ruby-on-rails jruby jrubyonrails

我有一个Rails应用程序,其中少量操作需要大量的计算时间.我没有考虑将这些操作作为后台任务进行管理的复杂性,而是发现我可以将处理拆分为多个线程,并且通过将JRuby与多核服务器一起使用,我可以确保所有线程在合理的时间内完成.(客户已表示非常有兴趣在后台保持此方法与运行任务.)

问题是写入Rails记录器在这些线程中不起作用.日志文件中没有显示任何内容.我找到了一些对这个问题的引用但没有解决方案.我不介意在我的代码中插入puts以帮助调试,但是stdout似乎被glassfish gem app服务器吃掉了.

有没有人成功完成Rails ruby​​线程内的日志记录,而不是每次都创建一个新日志?

Bra*_*dee 5

I was scratching my head with the same problem. For me the answer was as follows:

Thread.new do
  begin
    ...
  ensure
    Rails.logger.flush
  end
end
Run Code Online (Sandbox Code Playgroud)