अगर मैं logger = logging.getLogger ("name") का उपयोग कर एक लॉगर ऑब्जेक्ट को बनाऊँ तो मैं फाइलमैोड को बदलने में असमर्थ हूँ लिखने के लिए ('ए') संलग्न करें ('डब्ल्यू') मैं मूलभूत कॉन्फ़िग के साथ रूट लॉगर का उपयोग कर सकता हूं, लेकिन तब मुझे बहुत सारे सिस्टम डीबग संदेशों को लॉग-इन होने पर मिलता है, जब मैं चाहता हूं कि DEBUG स्तर से शुरू होने वाले मेरे स्वयं के संदेश।
मुझे उम्मीद है कि या तो 1) अपने खुद के लॉगर ऑब्जेक्ट के लिए 'w' या (2) रूट लॉगर में एक फिल्टर जोड़ते हैं। क्या रूट लॉगगर से इन डीबग संदेशों को फ़िल्टर करना भी संभव है?
def create_log (): "नमूना ऐप" के लिए # लोजर बनाने # # "नमूना ऐप" लॉगर = लॉगिंग के लिए लोजर बनाएं। GetLogger ('automated_testing') logger.setLevel (logging.DEBUG) # फ़ाइल हैंडलर बनाते हैं जो डीबग संदेश को भी लॉग करता है fh = logging.FileHandler ('results.log') fh.setLevel (logging.DEBUG) # कंसोल हैंडलर को उच्च के साथ बनाएँ लॉग स्तर CH = लॉगिंग.स्ट्रीमहैंडलर (स्ट्रीम = सिम्सस्टाइल) ch.setLevel (logging.DEBUG) # फ़ॉर्मेटर बनाएं और इसे हैंडलर्स फॉर्मेटर = लॉगिंग। फ़ॉर्मेट में जोड़ें ('[% (asctime) s]% (levelname) 8s ---% (संदेश) s '+' (% (filename) s:% (lineno) s) ', datefmt ='% Y-% m-% d% H:% M:% S ') fh.setFormatter (फॉर्मेटर) ch.setFormatter (formatter) # हैंगर को लॉगर लॉगर.एडहैंडलर (सीएच) लॉगर.एडहैंडलर (एफएच) रिटर्न लॉगर में जोड़ें
आयात सिस्ट आयात लॉगिंग def_logger (): "नमूना ऐप" लॉगर = logging.getLogger ('automated_testing') लॉगर के लिए # लॉगऑगर बनाएँ। SetLevel (logging.DEBUG) # फ़ाइल हैंडलर बनाते हैं जो डीबग संदेश fh = logging.FileHandler ('results.log', mode = 'w') लॉग करता है fh.setLevel (logging.DEBUG) # उच्च लॉग स्तर के साथ कंसोल हैंडलर बनाएँ CH = लॉगिंग.स्ट्रीमहैंडलर (स्ट्रीम = सिम्स। स्टडआउट) ch.setLevel (लॉगिंग। INFO) # फ़ॉर्मेटर बनाएं और इसे हैंडलर्स फॉर्मेटर = लॉगिंग। फ़ॉर्मेट में जोड़ें ('[% (asctime) s]% (levelname) 8 एस - -% (संदेश) एस '+' (% (फ़ाइल नाम) s:% (lineno) s) ', datefmt ='% Y-% m-% d% H:% M:% S ') fh.setFormatter (formatter ) Ch.setFormatter (formatter) # लॉगगर लॉगर.एडहैंडलर (सीएच) लॉगर.एडहैंडलर (एफएच) रिटर्न लॉगर लॉगर लॉगर = बनाने_लॉगर () लॉगर। लॉज (लॉगिंग। NETSET, "नोटिसेट संदेश - 0") लॉगर में जोड़ें। लॉग (logging.DEBUG, "संदेश प्रेषण - 10") logger.log (लॉगिंग.INFO, "INFO Message - 20") logger.log (लॉगिंग। चेतावनी, "चेतावनी संदेश - 30") logger.log (लॉगिंग। कैरीटिक, "गंभीर संदेश - 40 ")
stdout को प्रिंट करें:
[2015-03-16 17:51:08] जानकारी --- जानकारी संदेश - 20 (temp3.py:34 ) [2015-03-16 17:51:08] चेतावनी --- चेतावनी संदेश - 30 (temp3.py:35) [2015-03-16 17:51:08] गंभीर --- गंभीर संदेश - 40 (सैमसंग .py: 36)
रिजल्ट्स (एपेंड नहीं) results.log में:
[2015-03-16 17:51:08] डेब्यूग --- डेब्यूज संदेश - 10 ( Temp3.py:33) [2015-03-16 17:51:08] जानकारी --- सूचना संदेश - 20 (temp3.py:34) [2015-03-16 17:51:08] चेतावनी --- चेतावनी संदेश - 30 (temp3.py:35) [2015-03-16 17:51:08] CRITICAL --- CRITICAL संदेश - 40 (temp3.py:36)
दुबारा + में लॉग इन किए गए परिणाम। Txt जबकि केवल
INFO
+ stdout पर भेजते हैं।
ध्यान दें कि NOTSET
लॉग प्रविष्टि तब रूट लॉगर, जब से आप करते हैं रूट लॉगर पर कोई हैंडलर नहीं है, छोड़े गए।
No comments:
Post a Comment