2012-01-31 164 views
9

在Rails 3.2中,当使用logger.silence {}时,我得到弃用警告。在发行说明中: “不支持ActiveSupport :: BufferedLogger#沉默,如果要为特定块禁用日志,请更改该块的日志级别。”Rails 3.2静默日志弃用警告

如何轻松更改块的日志级别?

回答

2
def silent_method 
    old_level = Rails.logger.level 
    Rails.logger.level = 7 

    result = your_code_here 

    Rails.logger.level = old_level 

    result 
end 
4

看来,logger.silence正在通过简单地更换silence

logger.silence do 
    #your silenced code here 
end 

变为:

silence do 
    #your silenced code here 
end 

至少它不产生折旧警告了,而且它的沉默记录的输出。

+1

沉默应该有一个说法,不应该吗? https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/kernel/reporting.rb#L97 – kuboon 2013-04-14 05:19:54

+0

这在Rails 3.2.x中完全不起作用,而kuboon是正确的简单的'沉默'需要一个论点。 – astjohn 2013-11-04 19:39:02

3

第一个答案很好,但不完整。我们也试图找出这个问题。 silence &block已被弃用,在Rails 3中,所以你应该使用更新的语法直接调用记录:

Rails.logger.silence do 
    # your code here... 
end 

为了获得更大的甜,甜定制,你可以传递一个日志级别#silence()。

0

quietly{},因为silence需要一个流。