Actualmente estoy tratando de alinear a la derecha del campo de nivel de registro en mi registrador de Python por lo que la producción, tales como:Cómo alinear a la derecha en igualdad de Python logging.Formatter
[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)
lugar se parece a:
[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é la longitud nivel máximo es de 8 (por ejemplo: CRITICAL), entonces Me alinearé a la derecha en 8 espacios. Estoy tratando de descubrir cómo lograr esto. Lo siguiente falla porque "% (nombre de nivel) s" tiene más de 8 caracteres (la sustitución no ocurre hasta más adelante). Si utilizo algo como "{0:> 20}". Formatee "% (levelname) s", entonces funciona, pero eso es más relleno del que necesito o deseo.
logging.Formatter("[%(asctime)s] [" + "{0:>8}".format"%(levelname)s" + "] --- %(message)s (%(filename)s:%(lineno)s)", "%Y-%m-%d %H:%M:%S")
¿Corto de formateador de subclases, alguien tiene una manera de lograr esto?
Si desea que INFO quede alineado, puede usar '[% (levelname) -8s]' –