如何将所有日志从rufus-scheduler重定向到log / production.log?
例如,在控制台中,我可以看到类似的内容:
↳ config/initializers/XXX_scheduler.rb:15
{ 70173962355140 rufus-scheduler intercepted an error:
70173962355140 job:
70173962355140 Rufus::Scheduler::CronJob "43 12 * * *" {}
70173962355140 error:
70173962355140 70173962355140
70173962355140 NoMethodError
70173962355140 undefined method passenger_user for nil:NilClass
...
我在生产中的puma错误(puma.error.log)文件中找到此错误文本。 deploy.rb的一部分:
set :puma_error_log, "#{release_path}/log/puma.error.log"
如何将与rufus-scheduler相关的所有日志重定向到production.log?
答案 0 :(得分:1)
对不起,答案太晚了。
您看到的是Scheduler#on_error
的输出。默认情况下,它输出到stderr。
可以将该目的地替换为explained in the readme,但最好覆盖#on_error
和detailed in the readme。
您的#on_error
可能看起来像
def scheduler.on_error(job, error)
Rails.logger.error(
"err#{error.object_id} rufus-scheduler intercepted #{error.inspect}" +
" in job #{job.inspect}")
error.backtrace.each_with_index do |line, i|
Rails.logger.error(
"err#{error.object_id} #{i}: #{line}")
end
end
并因此简单地搭载Rails日志记录基础结构。
original #on_error非常详细。如果您需要更多调试信息,请随时从中获得启发。