Python Glossary English

Python 3.2+loggingфункция

logging.setLogRecordFactory()

записи и фильтры

Заменяет фабрику, которой логгеры создают записи. Так в каждую запись добавляют своё поле — например, номер запроса.

Синтаксис

logging.setLogRecordFactory(factory)

Новая фабрика должна вызывать старую, полученную через getLogRecordFactory(), и возвращать её результат: иначе вы потеряете чужие доработки, а возврат None сломает каждый вызов лога. Настройка глобальная и действует на все логгеры процесса, в отличие от LoggerAdapter, который добавляет контекст только своим вызовам.

Примеры

import logging, sys
old = logging.getLogRecordFactory()
def factory(*args, **kwargs):
    record = old(*args, **kwargs)
    record.app = 'shop'
    return record
logging.setLogRecordFactory(factory)
logging.basicConfig(stream=sys.stdout, format='[%(app)s] %(message)s')
logging.warning('старт')  # → [shop] старт

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности