停止记录 Rails 中的延迟作业活动记录条目

Stop logging Delayed Job active record entries in Rails

我的项目使用 rails 4.2.7delayed_job (4.0.6)delayed_job_active_record (4.0.3)。我们面临的问题是 Delayed Job 大约每分钟记录一次它的 sql 查询,这使得主日志文件的透明度降低并耗尽了我们的 Logmatic 订阅限制。 Delayed Job 正常记录到它自己的日志,但它的 activerecord 查询最终在主日志中。大多数条目如下所示:

(0.8ms)  SELECT COUNT(*) FROM `delayed_jobs` WHERE (failed_at is not NULL)
(0.5ms)  SELECT COUNT(*) FROM `delayed_jobs` WHERE (locked_by is not NULL)
(0.7ms)  SELECT COUNT(*) AS count_all, `delayed_jobs`.`queue` AS delayed_jobs_queue FROM `delayed_jobs` WHERE (run_at <= '2017-02-12 23:18:18.094189' and failed_at is NULL) GROUP BY `delayed_jobs`.`queue`
(0.8ms)  SELECT COUNT(*) AS count_all, `delayed_jobs`.`priority` AS delayed_jobs_priority FROM `delayed_jobs` WHERE (run_at <= '2017-02-12 23:18:18.095817' and failed_at is NULL) GROUP BY `delayed_jobs`.`priority`

之前的开发者介绍了这里描述的 delayed_job 消音器: How to ignore Delayed Job query logging in development on Rails 但它似乎不起作用,因为查询仍然记录在暂存日志和 Logmatic 中。

有没有办法停止记录这些(如果不能完全消除它们,也许将它们重定向到另一个文件)?假设我们仍然想记录与 delayed_job 无关的条目。

您可以像这样更改 DJ 工作人员登录初始化程序的日志文件:

Delayed::Worker.logger = Logger.new(File.join(Rails.root, 'log', 'delayed_job.log'))

这应该会清理您的主日志。

编辑:刚看到这不会影响 AR 日志。

您是否尝试过将 DJ 日志级别设置为信息而不是调试?