2012-01-31 152 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需要一個流。