все Python 3loggingпонятие
logging.Logger
логгеры
Класс логгера: через его методы debug(), info(), warning() программа пишет лог. Экземпляры получают через getLogger(), а не конструктором.
Синтаксис
logger = logging.getLogger(name); logger.setLevel(level); logger.info(msg, *args)
Logger('x') создаёт сироту вне иерархии: у него нет родителя, он не видит обработчиков корневого логгера и не совпадает с getLogger('x'). Уровень логгера и уровень обработчика — два разных сита: запись должна пройти оба, поэтому setLevel(DEBUG) у логгера ничего не покажет, если у обработчика выставлен уровень выше (новый обработчик имеет уровень NOTSET и пропускает всё). propagate=False обрывает всплытие к предкам — так лечат задвоение строк.
Примеры
import logging
a = logging.getLogger('app')
print(a is logging.getLogger('app'), logging.Logger('app') is a) # → True False
print(logging.Logger('app').parent) # → None
import logging, sys
log = logging.getLogger('app')
h = logging.StreamHandler(sys.stdout)
h.setLevel(logging.INFO)
log.addHandler(h)
log.setLevel(logging.DEBUG)
log.debug('не видно: отсеял обработчик')
log.info('видно') # → видно
print(log.getEffectiveLevel()) # → 10
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности