Jestem obecnie próbuje prawo wyrównać pole poziom rejestrowania w moim Pythona rejestrator tak, że produkcja takich jak:Jak prawo wyrównać warunki konkurencji w Pythonie 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)
zamiast wygląda następująco:
[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)
linia format bloku pierwszego jest:
logging.Formatter("[%(asctime)s] [%(levelname)s] --- %(message)s (%(filename)s:%(lineno)s)", "%Y-%m-%d %H:%M:%S")
Wiedząc, długość Maksymalny poziom wynosi 8 (np krytyczny), a następnie Będę wyrównany do 8 spacji. Próbuję dowiedzieć się, jak to osiągnąć. Następujące błędy nie powiodły się, ponieważ "% (levelname) s" ma więcej niż 8 znaków (podstawienie nie nastąpi później). Jeśli użyję czegoś w rodzaju "{0:> 20}" .format "% (levelname) s", to działa, ale jest to bardziej dopełnienie niż potrzebuję lub chcę.
logging.Formatter("[%(asctime)s] [" + "{0:>8}".format"%(levelname)s" + "] --- %(message)s (%(filename)s:%(lineno)s)", "%Y-%m-%d %H:%M:%S")
Skrót od podklasy Formatter, każdy ma sposób na osiągnięcie tego?
Jeśli chcesz mieć wyrównane do lewej strony, możesz użyć '[% (levelname) -8s]' –