【发布时间】:2014-07-02 06:08:50
【问题描述】:
我知道使用 silencer gem 可以抑制整个控制器的 Rails 日志记录。但是是否可以通过将某些 ActiveRecord 请求的 SQL 输出包装到某些语句中来单独抑制它?
【问题讨论】:
标签: ruby-on-rails activerecord logging
我知道使用 silencer gem 可以抑制整个控制器的 Rails 日志记录。但是是否可以通过将某些 ActiveRecord 请求的 SQL 输出包装到某些语句中来单独抑制它?
【问题讨论】:
标签: ruby-on-rails activerecord logging
沉默
对于您的问题,我没有具体的答案,但我们使用 ActiveRecord::Base.logger.silence 使记录器静音:
ActiveRecord::Base.logger.silence do
# your method here
end
它不适用于特定请求,但适用于您可能希望停止记录的操作。也许您可以扩展 ActiveRecord::Base 以使特定方法静音?
--
扩展 ActiveRecord
也许您可以将我所描述的内容与扩展 ActiveRecord 相结合? this question 的建议是使用 ActiveRecord 关注点。
我从未使用过其中之一 - 如果您觉得适用,可以整理一些代码
【讨论】:
我用这个:
save_for_later = ActiveRecord::Base.logger
ActiveRecord::Base.logger = nil #turns off sql activity
... do stuff...
ActiveRecord::Base.logger = save_for_later
顺便说一句,我从来没有在生产代码中这样做过,只是在 rake 任务中......
【讨论】: