Откуда в коде идет этот вывод? (Совершенствуем логи)

Нужен капитальный рмонт квартиры? Тогда нажмите для продолжения!

Важнейший вопрос для разработчика котором надо пофиксить ошибку, и он не знает где, но знает что в логах написано что-то не то - кто именно и откуда те логи пишет.Для решения такой проблемы я написал функцию watch_for_output, которая патчить sys.stdout и sys.stderr так что те начинают с каждой строкой что им передают, выводить все контактные данные того кто передает. Я поместил ее в свою библиотеку с всякими утилитами, поэтому использовать ее можно так:import butilsbutils.watch_for_output ()print 2 + 2# OUT: test.py 4 print 2 + 2# OUT: 4# OUT: test.py 4 print 2 +2 # print печатает еще переход на новую строку# OUT:Беда только что когда вывод происходит посредством не print, а например какого-то log.info, получится следующее:2014-04-10 20:56:19,593 INFO zen.zenpython: Connecting to localhost: 8789/ Opt/zenoss/lib/python2.7/logging/__init__.py: 863 stream.write (fs% msg)Не очень полезно ... Но, мы видим в строке лога следующее: zen.zenpython. Это, скорее всего, название логгера, а мы знаем, что логгер - Синглтон относительно названия (Note that Loggers are never instantiated directly, but always through the module-level function logging.getLogger (name). Multiple calls to getLogger () with the same name will always return a reference to the same Logger object. Logger objects).