Передать логи rufus-планировщика в файл production.log - PullRequest
1 голос
/ 17 апреля 2019

Как мне перенаправить все журналы из 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?

1 Ответ

1 голос
/ 22 апреля 2019

Извините за поздний ответ.

То, что вы видите, является результатом Scheduler#on_error. По умолчанию выводится в stderr.

Этот пункт назначения может быть переопределен, как объяснено в readme , но, вероятно, лучше переопределить #on_error, как подробно описано в 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 довольно подробно. Не стесняйтесь черпать вдохновение, если вам нужно больше информации для отладки.

...