Problem
delayed_jobを起動すると、以下のようなActiveRecordのログが定期的に出力されてしまい、他のログが見辛くなってしまう。
D, [2019-04-10T03:51:01.140319 #25947] DEBUG -- : Delayed::Backend::ActiveRecord::Job Update All (0.4ms) UPDATE `delayed_jobs` SET `delayed_jobs`.`locked_at` =..
D, [2019-04-10T03:51:06.142241 #25947] DEBUG -- : Delayed::Backend::ActiveRecord::Job Update All (0.5ms) UPDATE `delayed_jobs` SET `delayed_jobs`.`locked_at` =..
D, [2019-04-10T03:51:11.144010 #25947] DEBUG -- : Delayed::Backend::ActiveRecord::Job Update All (0.4ms) UPDATE `delayed_jobs` SET `delayed_jobs`.`locked_at` =..
Solution
config/initializers/delayed_job_config.rb
に以下の設定をすると、DelayedJobのActiveRecordのログが出力されなくなります。
config/initializers/delayed_job_config.rb
unless Rails.env.development?
module Delayed
module Backend
module ActiveRecord
class Job
class << self
alias_method :reserve_original, :reserve
def reserve(worker, max_run_time = Worker.max_run_time)
previous_level = ::ActiveRecord::Base.logger.level
::ActiveRecord::Base.logger.level = Logger::WARN if previous_level < Logger::WARN
value = reserve_original(worker, max_run_time)
::ActiveRecord::Base.logger.level = previous_level
value
end
end
end
end
end
end
end
参考: https://github.com/collectiveidea/delayed_job/issues/886#issuecomment-409758672