@ Эрик С.
Ответ Эрика С. превосходен, но я экспериментально выяснил, что это всегда приведет к печати сообщений, зарегистрированных на новом уровне отладки, независимо от уровня журнала.установлен в.Поэтому, если вы сделаете новый номер уровня 9, если вы вызовете setLevel (50), сообщения более низкого уровня будут ошибочно напечатаны.Чтобы этого не происходило, вам нужна другая строка внутри функции «debugv», чтобы проверить, действительно ли включен уровень ведения журнала.
Исправлен пример, который проверяет, включен ли уровень ведения журнала:
import logging
DEBUG_LEVELV_NUM = 9
logging.addLevelName(DEBUG_LEVELV_NUM, "DEBUGV")
def debugv(self, message, *args, **kws):
if self.isEnabledFor(DEBUG_LEVELV_NUM):
# Yes, logger takes its '*args' as 'args'.
self._log(DEBUG_LEVELV_NUM, message, args, **kws)
logging.Logger.debugv = debugv
Если вы посмотрите на код для class Logger
в logging.__init__.py
для Python 2.7, это то, что делают все стандартные функции журнала (.critical, .debug и т. Д.).
Я, очевидно,не может публиковать ответы на чужие ответы из-за отсутствия репутации ... надеюсь, Эрик обновит свой пост, если увидит это.=)