Voglio fare qualcosa che ho pensato sia semplice.Diversi livelli di registrazione in python
In realtà con il modulo di registrazione pitone, io sono la registrazione interessa tutto sulla linea di comando a livello di data dagli argomenti della riga di comando , e Registra su file ad un livello DEBUG fisso.
Creazione di due registratori diversi con diversi livelli non funziona, ma impostare i livelli di due diversi gestori sia aggiunto alla radice registratore non funziona neanche, in modo che qualsiasi idea su come avrei dovuto farlo davvero? (lettura su altri collegamenti secondo approccio dovrebbe funzionare, così sto facendo qualcos'altro di stupido?)
Questo è il codice che imposta il mio sistema di registrazione in questo momento:
class LoggerSetup(object):
"""Setup the different logger objects
"""
def __init__(self):
self.root_logger = logging.getLogger()
self.shell_hdlr = logging.StreamHandler()
#TODO: add another logging handler which stores to a temporary file
#which should be cleaned up later
def setup_shell_logger(self, log_level):
self.root_logger.setLevel(LOG_LEVELS[log_level])
# in this way the root logger is not set but the handlers are set
self.shell_hdlr = logging.StreamHandler()
self.shell_hdlr.setLevel(LOG_LEVELS[log_level])
self.shell_hdlr.setFormatter(StarFormatter())
#FIXME: add the support for regular expression exclusion too
self.root_logger.addHandler(self.shell_hdlr)
def setup_log_include(self, log_include):
"""Set up the filter to include log messages
"""
if log_include:
incl = FilterInclude(log_include)
self.shell_hdlr.addFilter(incl)
def setup_log_exclude(self, log_exclude):
"""Set up the filters to exclude log messages
"""
if log_exclude:
excl = FilterExclude(log_exclude)
self.shell_hdlr.addFilter(excl)
def setup_file_logging(self):
"""Set up the file logger, which always logs in DEBUG mode
even if the top level logger is set to another level
"""
#XXX: not working, one possible way to make it work is to create
#only one log, and different handler/filters to make to handle all
#the different outputs
file_handler = logging.FileHandler(LOG_FILENAME)
# the file logging is always in debug mode
file_handler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s - %(asctime)s')
file_handler.setFormatter(formatter)
self.root_logger.addHandler(file_handler)
", ma impostare i livelli di due diversi gestori sia aggiunti al root logger non funziona "? Puoi chiarire, per favore? –