将rufus-scheduler日志传递给production.log文件

问题描述 投票:1回答:1

如何将所有日志从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?

ruby-on-rails ruby-on-rails-5 puma rufus-scheduler
1个回答
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非常详细。如果您需要更多调试信息,请随意从中获取灵感。

© www.soinside.com 2019 - 2024. All rights reserved.