traductor traducir spanishdict online introductor introduccion inglés ingles gratis frases español diccionario convertidor como python logging

python - traducir - traductor de ingles online



¿Jerarquía de registro vs. root logger? (2)

En algún lugar de las entrañas de mi código tengo algo como:

logger = logging.getLogger(''debug0.x'')

De la manera que lo entiendo, esto solo debería responder cuando previamente he hecho algo como:

logging.basicConfig(filename=''10Nov2010a.txt'',level=logging.DEBUG, name=''debug0'')

tenga en cuenta que el nombre se ha definido como debug0 . Sin embargo, he descubierto que si

logging.basicConfig(filename=''10Nov2010a.txt'',level=logging.DEBUG)

sin la palabra clave del nombre , entonces el registrador debug0.x definido anteriormente reacciona y escribe en el archivo de registro. Estaba pensando que solo reaccionaría en el primer caso, cuando el registrador hubiera sido nombrado.

Estoy confundido.


El módulo de logging Python organiza los registradores en una jerarquía. Todos los registradores son descendientes del registrador raíz. Cada registrador pasa los mensajes de registro a su padre.

Los nuevos registradores se crean con la función getLogger() . La función call logging.getLogger(''debug0.x'') crea un registrador x que es un hijo de debug0 que a su vez es un hijo del registrador raíz. Al iniciar sesión en este registrador, pasará el mensaje a su padre y su padre pasará el mensaje al registrador raíz. Configuró el registrador raíz para que se registre en un archivo mediante la función basicConfig() , por lo que su mensaje terminará allí.


Si revisa el código o el documento:

>>> print logging.basicConfig.__doc__ Do basic configuration for the logging system. This function does nothing if the root logger already has handlers configured. ............... A number of optional keyword arguments may be specified, which can alter the default behaviour. filename Specifies that a FileHandler be created, using the specified filename, rather than a StreamHandler. filemode Specifies the mode to open the file, if filename is specified (if filemode is unspecified, it defaults to ''a''). format Use the specified format string for the handler. datefmt Use the specified date/time format. level Set the root logger level to the specified level. stream Use the specified stream to initialize the StreamHandler. Note that this argument is incompatible with ''filename'' - if both are present, ''stream'' is ignored.

logging.basicConfig no usa ningún argumento de nombre. Inicializa el logger raíz. Mientras que getLogger toma un argumento de "nombre"

>>> print logging.getLogger.__doc__ Return a logger with the specified name, creating it if necessary. If no name is specified, return the root logger.