Я изо всех сил пытаюсь заставить Python регистрировать, как я хочу. Я добавил некоторый контекст в свои операторы журнала, добавив фильтр и обновив строку формата, чтобы напечатать содержимое фильтра. Это работает, как и ожидалось, пока all код мой.
Но если сторонний модуль что-то регистрирует, он выдает ошибку, потому что этот модуль не знает о моем фильтре.
Как получить контекст в моих журналах, не взрывая журналы сторонних модулей?
Этот код отлично работает в моих модулях. Но если сторонний модуль хочет что-то зарегистрировать, он не знает о моем ContextFilter, который подробно описывает nstid , который я хочу в своих сообщениях журнала.
import logging
import sys
import boto3
from ContextFilter import ContextFilter
logging.basicConfig(
format='%(asctime)s %(levelname)-8s nstid:%(nstid)8s %(message)s',
handlers=[logging.StreamHandler(sys.stdout)],
level=logging.INFO,
datefmt='%Y-%m-%d %H:%M:%S'
)
log = logging.getLogger(__name__)
log.addFilter(ContextFilter())
log.info("important information")