Найти - Пользователи
Полная версия: Python2 logger
Начало » Python для новичков » Python2 logger
1
der_fenix
Народ, кто проконсультирует по поводу питоновского logger'а?
Есть основной модуль и дополнительный, который импортируется в основной. В обоих созданы логгеры, через logging.getLogger, у каждого своё имя. Но в лог летит всё в двух экземплярах, не важно откуда логгирование было вызвано - из основного модуля или из дополнительного.
вот как с этим бороться?

Инициализация логгеров в основном и дополнительном модулях соответственно ниже
http://pastebin.com/sWYZm1Pk
http://pastebin.com/HAsUmfWW
Андрей Светлов
В доп модуле не цепляйте handler — хватит того, который сидит в верхнеуровневом логере
der_fenix
Спасибо! Помогло!
Но теперь интересует другой вопрос - а если мне в ещё одном модуле нужен будет вывод например только в файл - как запретить логгеру писать на стандартный вывод? Ведь, я так понял, хэндлеры цепляются один раз на все логгеры?
Андрей Светлов
Не так.
Logger пишет во все свои handlers. Затем повторяет эту процедуру для всех parent logger раз за разом.
Так и получается, что ваше сообщение доходит до root logger, который его благополучно печатает.
Если у Logger поставить propagate = False — родителя просить не будет. Зачем нужно — не знаю. Пока еще не разу не требовалось применять.
Стандартная схема: root собирает всё, отдельные логеры пишут в свои источники если им нужно.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB