Как правильно выровнять поле уровня в журнале Python.Formatter - PullRequest
32 голосов
/ 14 октября 2011

В настоящее время я пытаюсь выровнять поле уровня ведения журнала в моем регистраторе Python вправо так, чтобы получилось следующее:

[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)

вместо этого выглядит как:

[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)

Строка формата для первого блока:

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

Если я знаю, что максимальная длина уровня равна 8 (например, КРИТИЧЕСКИЙ), тогда я выровняю по правому краю 8 пробелов. Я пытаюсь понять, как этого добиться. Следующая ошибка не выполняется, потому что «% (levelname) s» содержит более 8 символов (подстановка произойдет только позже). Если я использую что-то вроде "{0:> 20}". Format "% (levelname) s", то это работает, но это больше заполнения, чем мне нужно или нужно.

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

Если не считать подклассов Formatter, у кого-нибудь есть способ добиться этого?

Ответы [ 2 ]

52 голосов
/ 14 октября 2011

Как это:

logging.Formatter("[%(asctime)s] [%(levelname)8s] --- %(message)s (%(filename)s:%(lineno)s)", "%Y-%m-%d %H:%M:%S")
3 голосов
/ 14 октября 2011

Попробуйте использовать следующую строку формата:

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

В программе форматирования Python Logger используются стандартные правила Python для форматирования строк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...