2013-11-28 10 views
7

में रूट लॉगर मैं Django प्रोजेक्ट के लिए एक सेंट्री लॉगर सेट करना चाहता हूं। मैं sentry हैंडलर को परिभाषित कर दूंगा और उस हैंडलर को रूट लॉगर में error स्तर के साथ रखूंगा।dictconfig

logging मॉड्यूल के प्रलेखन के अनुसार, वहाँ एक विशेष root कुंजी:

root - इस रूट लकड़हारा के लिए विन्यास किया जाएगा। कॉन्फ़िगरेशन की प्रसंस्करण किसी भी लॉगर के लिए होगी, सिवाय इसके कि propagate सेटिंग लागू नहीं होगी।

नाम '' साथ other स्थानों एक लकड़हारा में एक ही समय में जड़ लकड़हारा के लिए विन्यास को रोकने के लिए प्रयोग किया जाता है।

क्या इसका कोई प्रभाव नहीं है? बेहतर क्या है?

>>> import logging 
>>> logging.getLogger('') is logging.root 
True 
>>> 

उत्तर

6

किसी भी तरह से काम करेगा, क्योंकि '' नामक लॉगर रूट लॉगर है। root निर्दिष्ट करना यह स्पष्ट करता है कि आप क्या कर रहे हैं यदि आप बहुत सारे लॉगर्स कॉन्फ़िगर कर रहे हैं - '' लॉगजर कॉन्फ़िगरेशन दूसरों के समूह के अंदर खो जा सकता है, जबकि root कुंजी loggers कुंजी के निकट है और इसलिए (सिद्धांत में) अधिक खड़ा होना चाहिए।

+1

यह [सेटिंग्स.LOGGING] (https://docs.djangoproject.com/en/dev/topics/logging/#configuring-logging) विशेषता के साथ आपकी लॉगिंग कॉन्फ़िगरेशन को परिभाषित करते समय * सही नहीं लगता है Django 1.7! मैं अपने विचार मॉड्यूल में एक नामांकित लॉगर पर लॉग इन कर रहा हूं और लॉग रिकॉर्ड कैप्चर किया गया है यदि मैंने अपने 'लॉगिंग' में '' 'नामक लॉगर को परिभाषित किया है, लेकिन * नहीं * अगर मैं इसे' रूट 'नाम देता हूं। दुर्भाग्य से, Django दस्तावेज रूट लॉगजर से निपटने के तरीके पर कोई बयान नहीं देता है। –

+4

@heheimbuerger यह लॉगर्स dict में रूट नहीं है, यह लॉगर्स dict के समानांतर है। अधिक जानकारी के लिए https://docs.python.org/2/library/logging.config.html#dictionary-chechema- विवरण देखें। –