write values setlevel logger log info example disable_existing_loggers python logging formatting

setlevel - python logging level values



Cómo alinear a la derecha el campo de nivel en Python logging.Formatter (2)

Actualmente estoy intentando alinear correctamente el campo de nivel de registro en mi registrador de Python para que la salida como:

[2011-10-14 13:47:51] [DEBUG] --- starting... (smtphandlers.py:96) [2011-10-14 13:47:51] [INFO] --- first things first... (smtphandlers.py:97) [2011-10-14 13:47:51] [WARNING] --- about to end... (smtphandlers.py:98) [2011-10-14 13:47:51] [DEBUG] --- ending (smtphandlers.py:99)

en cambio se ve como

[2011-10-14 13:47:51] [ DEBUG] --- starting... (smtphandlers.py:96) [2011-10-14 13:47:51] [ INFO] --- first things first... (smtphandlers.py:97) [2011-10-14 13:47:51] [ WARNING] --- about to end... (smtphandlers.py:98) [2011-10-14 13:47:51] [ DEBUG] --- ending (smtphandlers.py:99)

La línea de formato para el primer bloque es:

logging.Formatter("[%(asctime)s] [%(levelname)s] --- %(message)s (%(filename)s:%(lineno)s)", "%Y-%m-%d %H:%M:%S")

Si sé que la longitud del nivel máximo es 8 (por ejemplo: CRÍTICO), entonces me alinearé a la derecha con 8 espacios. Estoy tratando de averiguar cómo lograr esto. Lo siguiente falla porque "% (levelname) s" tiene más de 8 caracteres (la sustitución no se produce hasta más tarde). Si uso algo como "{0:> 20}". Format "% (levelname) s", entonces funciona, pero eso es más relleno del que necesito o quiero.

logging.Formatter("[%(asctime)s] [" + "{0:>8}".format"%(levelname)s" + "] --- %(message)s (%(filename)s:%(lineno)s)", "%Y-%m-%d %H:%M:%S")

A falta de subclasificar formateador, ¿alguien tiene una manera de lograr esto?


Me gusta esto:

logging.Formatter("[%(asctime)s] [%(levelname)8s] --- %(message)s (%(filename)s:%(lineno)s)", "%Y-%m-%d %H:%M:%S")


Prueba con esta línea de formato:

logging.Formatter("[%(asctime)s] [%(levelname)8s] --- %(message)s (%(filename)s:%(lineno)s)", "%Y-%m-%d %H:%M:%S")

el formateador del registrador de Python utiliza las reglas de formato de cadena de python estándar