2013-03-28 4 views
5

फ़ाइल करने के लिए स्ट्रीमहैंडलर आउटपुट को दबा रहा है मेरे पास एक सादा पायथन (गैर-Django) प्रोजेक्ट है जहां मैं tie Raven into the logging setup पर कोशिश कर रहा हूं।रावेन की सेंट्री हैंडलर

हमारे मौजूदा सेटअप के अंतर्गत, हम एक सरल प्रवेश config का उपयोग करें:

import logging 
logging.basicConfig(format='long detailed format', 
        level=logging.DEBUG) 

उत्पादन तो एक लॉग फ़ाइल पर भेज दिया जाएगा; यह एक अच्छा, वर्बोज़ लॉग उत्पन्न करता है जिसे हम देखना चाहते हैं जब हम देख सकते हैं।

अब हम अपने वर्तमान लॉगिंग सेटअप में बांधने, रेवेन की त्रुटि लॉगिंग जोड़ना चाहते हैं ताकि logging.error कॉल भी संदेश में परिणाम संतरी सर्वर के लिए भेजा जा रहा है। निम्नलिखित कोड का उपयोग करना:

from raven import Client 
from raven.conf import setup_logging 
from raven.handlers.logging import SentryHandler 

raven = Client(environ.get('SENTRYURL', ''), site='SITE') 
setup_logging(SentryHandler(raven, level=logging.ERROR)) 

त्रुटियाँ सफलतापूर्वक संतरी के लिए भेजा जा रहा है, लेकिन मैं अब केवल फ़ाइल आउटपुट की एक पंक्ति हो रही है:

DEBUG: Configuring Raven for host: <DSN url> 

सभी अन्य फ़ाइल उत्पादन - करने के लिए logging.debug से logging.error - दबाया जा रहा है।

यदि मैं setup_logging लाइन पर टिप्पणी करता हूं, तो मुझे फ़ाइल आउटपुट मिलता है लेकिन कोई सेंट्री त्रुटियां नहीं होती हैं। मैं क्या गलत कर रहा हूं?

उत्तर

3

यह मैला कोड का मामला बन गया। हम कुछ स्टार्टअप निष्पादन रास्ता है कि फिर से प्रारंभ लॉगिंग में कहीं हैक किया था:

logging.root.removeHandler(logging.root.handlers[0]) # Undo previous basicConfig 
logging.basicConfig(format='same long format', 
        level=logging.DEBUG) 

हालांकि, logging.basicConfig के बाद से कुछ नहीं करता है, तो logging.root मौजूदा संचालकों है, यह केवल धारा हैंडलर हटा दिया, संतरी हैंडलर छोड़ने , और basicConfig के बाद नो-ऑप के रूप में कार्य किया, जिसका अर्थ है कि हमने अपने स्ट्रीमहैंडलर को पूरी तरह से खो दिया है।

इन पंक्तियों को हटाने और केवल एक basicConfig और setup_logging कॉल काम किया।

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