如何禁用rake任务的日志记录?

Pre*_*her 19 rake ruby-on-rails ruby-on-rails-3

我有一个rake任务,每天一次作为cron作业运行.它对当前具有57k +记录的模型执行一些维护.这增加了几十万行到日志中的每个任务运行它目前在任何一个环境中的时间.(目前它只是在开发中.)

如何禁用特定rake任务或任务组的日志记录,但是为应用程序的其余部分保留单独的日志记录,并为从任务调用的模型/方法保留单独的日志记录?

Rya*_*igg 33

Rails记录器是一个ActiveSupport::BufferedLogger对象,但可以重新分配给您希望的任何其他类型的Logger对象(或响应Logger方法的任何对象),包括以下内容:

dev_null = Logger.new("/dev/null")
Rails.logger = dev_null
ActiveRecord::Base.logger = dev_null
Run Code Online (Sandbox Code Playgroud)

把这些线在你的Rake任务的顶部,并会将日志输出都将被廉价地送到/dev/null,这是最好的解释了维基百科的文章.

  • 使用"/ dev/null"效率很低(仍然格式化并写入文件).`Logger.new(nil)`工作正常. (6认同)
  • @Preacher:我认为这个问题清楚地解释了它现在正在做什么./ dev/null是一个可以写入的位置,但它实际上并没有在任何地方写入,数据被丢弃. (2认同)