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')
Attuazione a parte, io penso che sia una buona idea usare le funzionalità di registrazione in python per l'output sul terminale, in particolare perché è possibile aggiungere un altro gestore per accedere anche a un file. Se imposti lo stdout come INFO invece di DEBUG, puoi anche includere ulteriori informazioni DEBUG che l'utente non vedrebbe nel file di registro in modo standard.
fonte
2015-07-16 16:09:26
Vedere questo per una soluzione: http://stackoverflow.com/questions/1383254/logging-streamhandler-and-standard-streams – guettli