У меня есть служебный метод, который выполняет некоторую регистрацию.
Я хотел бы видеть в журналах имя вызывающего метода, а не имя служебного метода.
Для тестирования я попробовал это (позже я хочу получить «бар» от вызывающего абонента через модуль проверки).
def helper(...):
logger.info('foo', extra=dict(funcName='bar'))
Но это не работает:
File "/usr/lib/python2.7/logging/__init__.py", line 1167, in info
self._log(INFO, msg, args, **kwargs)
File "/usr/lib/python2.7/logging/__init__.py", line 1285, in _log
record = self.makeRecord(self.name, level, fn, lno, msg, args, exc_info, func, extra)
File "/usr/lib/python2.7/logging/__init__.py", line 1263, in makeRecord
raise KeyError("Attempt to overwrite %r in LogRecord" % key)
KeyError: "Attempt to overwrite 'funcName' in LogRecord"
Вот результат (если я не попытаюсь передать «дополнительно»):
2017-01-30 15:00:24 loghelper.helper
Я хотел бы видеть звонящего:
2017-01-30 15:00:24 calling_module.calling_method
Как это можно сделать?
Обновить
Имя метода и другие данные выводятся через средство форматирования журналов:
logging.Formatter('%(asctime)s %(name)s.%(funcName)s +%(lineno)s: %(levelname)-8s [%(process)d] %(message)s',
'%Y-%m-%d %H:%M:%S')
Подробнее здесь: https://stackoverflow.com/questions/419 ... in-logging