ruby-on-rails – 如何忽略Rails中的延迟作业查询记录

如何从log / development.log中沉/忽略这些延迟作业查询日志?
Delayed::Backend::ActiveRecord::Job Load (1.0ms)  UPDATE "delayed_jobs" SET locked_at = '2013-11-19 19:55:45.053991',locked_by = 'host:desktop-virtual pid:22277' WHERE id IN (SELECT id FROM "delayed_jobs" WHERE ((run_at <= '2013-11-19 19:55:45.053435' AND (locked_at IS NULL OR locked_at < '2013-11-19 15:55:45.053519') OR locked_by = 'host:desktop-virtual pid:22277') AND Failed_at IS NULL) ORDER BY priority ASC,run_at ASC LIMIT 1 FOR UPDATE) RETURNING *
Delayed::Backend::ActiveRecord::Job Load (1.4ms)  UPDATE "delayed_jobs" SET locked_at = '2013-11-19 19:55:50.056977',locked_by = 'host:desktop-virtual pid:22277' WHERE id IN (SELECT id FROM "delayed_jobs" WHERE ((run_at <= '2013-11-19 19:55:50.056484' AND (locked_at IS NULL OR locked_at < '2013-11-19 15:55:50.056530') OR locked_by = 'host:desktop-virtual pid:22277') AND Failed_at IS NULL) ORDER BY priority ASC,run_at ASC LIMIT 1 FOR UPDATE) RETURNING *

我已经尝试将其添加到config / initializers / delayed_job.rb中,它会路由除了日志/ development.log中仍然存放的间隔查询日志之外的所有内容.

if Rails.env == "development"
  Delayed::Worker.logger = Logger.new(File.join(Rails.root,"log","delayed_job.log"))
end

谢谢.

解决方法

日志行仍然显示,因为该行由ActiveRecord记录,而不是延迟作业.有关更多信息,请参阅 github bug report.这是一个解决方法

在config / initializers / delayed_job_silencer.rb中:

if 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

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...