import logging
import sys
class LessThanFilter(logging.Filter):
def __init__(self, exclusive_maximum, name=""):
super(LessThanFilter, self).__init__(name)
self.max_level = exclusive_maximum
def filter(self, record):
#non-zero return means we log this message
return 1 if record.levelno < self.max_level else 0
#Get the root logger
logger = logging.getLogger()
#Have to set the root logger level, it defaults to logging.WARNING
logger.setLevel(logging.NOTSET)
logging_handler_out = logging.StreamHandler(sys.stdout)
logging_handler_out.setLevel(logging.DEBUG)
logging_handler_out.addFilter(LessThanFilter(logging.WARNING))
logger.addHandler(logging_handler_out)
logging_handler_err = logging.StreamHandler(sys.stderr)
logging_handler_err.setLevel(logging.WARNING)
logger.addHandler(logging_handler_err)
#demonstrate the logging levels
logger.debug('DEBUG')
logger.info('INFO')
logger.warning('WARNING')
logger.error('ERROR')
logger.critical('CRITICAL')
कार्यान्वयन अलग रूप में, मैं यह है लगता है टर्मिनल पर आउटपुट के लिए पायथन में लॉगिंग सुविधाओं का उपयोग करना एक अच्छा विचार है, विशेष रूप से क्योंकि आप फ़ाइल में अतिरिक्त लॉग इन करने के लिए एक और हैंडलर जोड़ सकते हैं। यदि आप DEBUG के बजाय STDout INFO होने के लिए सेट करते हैं, तो आप अतिरिक्त DEBUG जानकारी भी शामिल कर सकते हैं जिसे उपयोगकर्ता लॉग फ़ाइल में मानक रूप से नहीं देख पाएगा।
स्रोत
2015-07-16 16:09:26
एक समाधान के लिए इस देखें: http://stackoverflow.com/questions/1383254/logging-streamhandler-and-standard-streams – guettli