Quiero hacer algo que pensé que era simple.Diferentes niveles de registro en python
realidad con el módulo de registro de Python, estoy interesado tala todo en la línea de comandos a nivel determinado a partir de los argumentos de línea de comandos y registro en un archivo a un nivel de depuración fijo.
Creación de dos registradores diferentes con diferentes niveles no funciona, pero establecer los niveles de dos manipuladores diferentes tanto añaden al registrador de la raíz no funciona bien, por lo que cualquier idea acerca de cómo en realidad debería hacerlo? (lectura en otros enlaces del segundo enfoque debería funcionar, por lo que estoy haciendo algo más estúpida?)
Este es el código que establece mi sistema de registro en el 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)
", pero establecer los niveles de dos manejadores diferentes ambos agregados al registrador de raíz no funciona "? ¿Puedes aclarar, por favor? –