【问题标题】:Suppress Rails logging for specific ActiveRecord request禁止特定 ActiveRecord 请求的 Rails 日志记录
【发布时间】:2014-07-02 06:08:50
【问题描述】:

我知道使用 silencer gem 可以抑制整个控制器的 Rails 日志记录。但是是否可以通过将某些 ActiveRecord 请求的 SQL 输出包装到某些语句中来单独抑制它?

【问题讨论】:

    标签: ruby-on-rails activerecord logging


    【解决方案1】:

    沉默

    对于您的问题,我没有具体的答案,但我们使用 ActiveRecord::Base.logger.silence 使记录器静音:

        ActiveRecord::Base.logger.silence do
            # your method here
        end
    

    它不适用于特定请求,但适用于您可能希望停止记录的操作。也许您可以扩展 ActiveRecord::Base 以使特定方法静音?

    --

    扩展 ActiveRecord

    也许您可以将我所描述的内容与扩展 ActiveRecord 相结合? this question 的建议是使用 ActiveRecord 关注点。

    我从未使用过其中之一 - 如果您觉得适用,可以整理一些代码

    【讨论】:

    • 正是我需要的!
    【解决方案2】:

    我用这个:

    save_for_later = ActiveRecord::Base.logger
    ActiveRecord::Base.logger = nil #turns off sql activity
    ... do stuff...
    ActiveRecord::Base.logger = save_for_later
    

    顺便说一句,我从来没有在生产代码中这样做过,只是在 rake 任务中......

    【讨论】:

      猜你喜欢
      • 2018-07-24
      • 2012-07-07
      • 2011-07-16
      • 2016-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多