如何将所有日志从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?
抱歉回复晚了。
你看到的是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非常详细。如果您需要更多调试信息,请随意从中获取灵感。