2012-01-31 18 views
9

Rails 3.2では、logger.silence {}を使用している場合、非推奨の警告が表示されます。リリースノート: "ActiveSupport :: BufferedLogger#silenceは非推奨です。特定のブロックのログをスケルチしたい場合は、そのブロックのログレベルを変更してください。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

沈黙には1つの引数が必要ですか? https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/kernel/reporting.rb#L97 – kuboon

+0

これはRails 3.2.xでは全く機能しません.kuboonは正しいです明白な「沈黙」には議論が必要です。 – astjohn

3

最初の回答は良いですが、完全ではありません。私たちはこの問題も解決しようとしていました。 )、さらに甘い、甘いカスタマイズについては

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

、あなたは(#silenceするログレベルを渡すことができます:silence &blockは、あなたが直接ロガーを呼び出して、更新の構文を使用する必要がありますので、レール3に廃止されました。

0

quietly{}silenceはストリームが必要なためです。

関連する問題