2012-01-31 17 views
9

रेल 3.2 में मुझे logger.silence {} का उपयोग करते समय बहिष्करण चेतावनी मिलती है। रिलीज नोट में: "ActiveSupport :: BufferedLogger # मौन को बहिष्कृत किया गया है। यदि आप किसी निश्चित ब्लॉक के लिए लॉग को घुमाने के लिए चाहते हैं, तो उस ब्लॉक के लिए लॉग स्तर बदलें।"रेल 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

+0

यह रेल 3.2.x में बिल्कुल काम नहीं करता है और क्यूबून सही है उस सादे 'चुप्पी' को एक तर्क की जरूरत है। – astjohn

3

पहला उत्तर अच्छा है, लेकिन पूरा नहीं हुआ। हमें इस मुद्दे को भी समझने की कोशिश कर रहे मुद्दे थे। silence &block रेल 3 में पदावनत किया गया है, तो आप लकड़हारा सीधे बुला अद्यतन सिंटैक्स का उपयोग करना चाहिए:

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

भी अधिक मिठाई, मिठाई customizability के लिए, आप #silence को एक लॉग स्तर पारित कर सकते हैं()।

0

या quietly{}, silence के बाद से एक स्ट्रीम की आवश्यकता है।

संबंधित मुद्दे