2012-01-31 9 views
9

W Railsach 3.2 otrzymuję ostrzeżenie o przestarzałości, gdy używam logger.silence {}. W informacji o wersji: "Aktywacja ActiveSupport :: BufferedLogger # silence jest przestarzała .Jeśli chcesz zablokować dzienniki dla określonego bloku, zmień poziom rejestrowania dla tego bloku."Railsy 3.2 komunikat o cofnięciu ostrzeżenia o ciszy

Jak mogę łatwo zmienić poziom rejestru dla bloku?

Odpowiedz

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

Wydaje się, że logger.silence jest zastępowany przez prostu silence:

logger.silence do 
    #your silenced code here 
end 

staje:

silence do 
    #your silenced code here 
end 

Przynajmniej nie generuje ostrzeżenie amortyzacji anymore, i robi ciszy zarejestrowane dane wyjściowe.

+1

Cisza powinna mieć jeden argument, nieprawdaż? https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/kernel/reporting.rb#L97 – kuboon

+0

To nie działa w ogóle w Railsach 3.2.x i kuboon jest poprawne w ta zwykła "cisza" potrzebuje argumentu. – astjohn

3

Pierwsza odpowiedź jest dobra, ale nie kompletna. Mieliśmy problemy z wykryciem tego również. silence &block została zaniechana w Rails 3, więc należy użyć zaktualizowaną składni wywołanie rejestratora bezpośrednio:

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

Dla jeszcze bardziej słodki Dostosowalność można przejść poziom dziennika #silence().

Powiązane problemy