2011-06-02 18 views
11

मेरे पास एक पिरामिड एप्लिकेशन है और मैं चाहता हूं कि लॉग stderr और stdout पर जाएं। stdout "INFO" स्तर और नीचे होना चाहिए। stderr "चेतावनी" और उच्च होना चाहिए। ऐसा करने के लिए मैं अपनी .ini फ़ाइल कैसे बदलूं?पिरामिड लॉगिंग

वर्तमान में मैं इस तरह लॉगिंग कर रहा हूं, क्या यह सही तरीका माना जाता है?

log = logger.getLogger(__name__) 
log.info("update ...") 
log.error("MAYDAY MAYDAY... BOOM!!!")

वर्तमान में मैं डिफ़ॉल्ट लॉगिंग का उपयोग कर रहा हूं, जो यह है।

 
[loggers] 
keys = root, app 

[handlers] 
keys = console 

[formatters] 
keys = generic 

[logger_root] 
level = WARN 
handlers = console 

[logger_app] 
level = WARN 
handlers = 
qualname = app 

[handler_console] 
class = StreamHandler 
args = (sys.stderr,)                               
85 level = NOTSET 
formatter = generic 

[formatter_generic] 
format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s 

उत्तर

10

आप रूट, अल्पविराम-सीमित में एकाधिक हैंडलर जोड़ सकते हैं। यदि आप सामान्य के बाहर फ़िल्टर करना चाहते हैं "केवल इस लॉगिंग स्तर के ऊपर वाले संदेशों को स्वीकार करें" मानदंड (यानी केवल डीबग संदेश) तो आपको अपने विशिष्ट स्तरों के आधार पर रिकॉर्ड स्वीकार/अस्वीकार करने के लिए लॉगिंग फ़िल्टर की तरह कुछ उपयोग करने की आवश्यकता है: http://docs.python.org/library/logging.html#filter-objects

log = logging.getLogger(__name__) का उपयोग कर लॉगिंग की आपकी वर्तमान विधि पूरी तरह वैध है और लॉगिंग पदानुक्रम को व्यवस्थित करने का एक सुविधाजनक तरीका है।

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