У меня есть средство форматирования, которое ожидает специальный атрибут в записи "user_id", который не всегда существует (иногда я добавляю его в записи, используя специальный logging.Filter).Я попытался переопределить метод ведения журнала makeRecord.Logger примерно так:
import logging
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)-15s user_id=%(user_id)s %(filename)s:%(lineno)-15s: %(message)s')
class OneTestLogger(logging.Logger):
def makeRecord(self, name, level, fn, lno, msg, args, exc_info, func=None, extra=None):
rv = logging.Logger.makeRecord(self, name, level, fn, lno,
msg, args, exc_info,
func, extra)
rv.__dict__.setdefault('user_id', 'master')
return rv
if __name__ == '__main__':
logger = OneTestLogger('main')
print logger
logger.info('Starting test')
Но, похоже, это не работает, и я продолжаю получать:
<<strong> main .MyLogger instance at 0x7f31a6a5b638>
Не удалось найти обработчики для регистратора "main"
Что я делаю не так?Спасибо.