从脚本/运行器禁用Rails日志记录

Ste*_*ick 10 logging ruby-on-rails

有没有办法从运行的脚本中禁用所有日志记录(无论是来自ActiveRecord,Rails的其他部分,插件等)script/runner?我运行了一个很长的数据加载脚本,它产生了大量无用的日志信息.我并不是想改变script/runner环境(例如,生产,开发等) - 目前需要在"开发"环境中运行脚本,而且目前这样做没有问题.

我想做的就是在脚本生命周期内禁止所有日志记录.从阅读的文档,它看起来像如果我能得到一个处理的Rails::Configuration我应该是能够设置log_level为以外的东西:debug或者设置它loggernil.我是在正确的轨道上吗?如果是这样,我如何访问其Rails::Configuration对象?

Jam*_*noy 30

我可以想到几种方法.

1)将日志级别设置得如此之高,以至于不记录任何内容:

ActiveRecord::Base.logger.level = Logger::Severity::UNKNOWN
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅Logger :: Severity.未知是最高的.

"level"只是一个数字,所以如果你感到偏执,它可以设置为Logger :: Severity :: UNKNOWN + 1.:)

2)将输出发送到/ dev/null.

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

(我假设有是使用Rails的记录器只是一个实例,它是你的ActiveRecord通过:: Base.logger得到一个.如果有更多的人你必须要找到他们,拨弄他们也.)

如果您不喜欢这些,可以通过阅读Logger文档找到其他内容.