Вы можете установить обезьяна методом Logger.addHandler
, например,
def monkeypatch_logging():
import logging
add_handler_orig = logging.Logger.addHandler
def _addHandler(self, hdlr):
import traceback
traceback.print_stack()
add_handler_orig(self, hdlr)
logging.Logger.addHandler = _addHandler
Поместите код где-нибудь рядом с точкой входа, чтобы он работал достаточно рано, например,
if __name__ == '__main__':
import logging
monkeypatch_logging()
logging.basicConfig(level=logging.INFO)
logging.info('hello world')
выведет:
File "spam.py", line 18, in <module>
logging.basicConfig(level=logging.INFO)
File "/usr/lib64/python3.6/logging/__init__.py", line 1823, in basicConfig
root.addHandler(h)
File "spam.py", line 10, in _addHandler
traceback.print_stack()
INFO:root:hello world
Трассировка стека покажет вам, где был вызван Logger.addHandler
.