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Сообщить о неточности