2012-01-31 16 views
9

In Rails 3.2 Viene visualizzato un avviso di deprecazione quando si utilizza logger.silence {}. Nella nota di rilascio: "ActiveSupport :: BufferedLogger # silence è deprecato.Se si desidera eliminare i registri per un determinato blocco, modificare il livello di registro per tale blocco."Rails 3.2 avviso di deprecazione della registrazione del silenzio

Come posso modificare facilmente il livello di registro per il blocco?

risposta

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

Sembra che logger.silence è di essere sostituito semplicemente silence:

logger.silence do 
    #your silenced code here 
end 

diventa:

silence do 
    #your silenced code here 
end 

Almeno non genera più l'avvertimento di ammortamento, e lo fa il silenzio l'output registrato

+1

il silenzio dovrebbe avere un argomento, non dovrebbe? https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/kernel/reporting.rb#L97 – kuboon

+0

Questo non funziona affatto in Rails 3.2.xe kuboon è corretto in quel semplice 'silenzio' ha bisogno di una discussione. – astjohn

3

La prima risposta è buona, ma non completa. Stavamo riscontrando problemi nel tentativo di capire anche questo. silence &block è stato deprecato in Rails 3, così si dovrebbe usare la sintassi aggiornato chiamando direttamente il registratore:

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

Per ancora più dolce, dolce di personalizzazione, è possibile passare un livello di registro per #silence().

0

oppure quietly{}, dal silence richiede uno streaming.

Problemi correlati