Форум сайта python.su
0
Народ, кто проконсультирует по поводу питоновского logger'а?
Есть основной модуль и дополнительный, который импортируется в основной. В обоих созданы логгеры, через logging.getLogger, у каждого своё имя. Но в лог летит всё в двух экземплярах, не важно откуда логгирование было вызвано - из основного модуля или из дополнительного.
вот как с этим бороться?
Инициализация логгеров в основном и дополнительном модулях соответственно ниже
http://pastebin.com/sWYZm1Pk
http://pastebin.com/HAsUmfWW
Офлайн
14
В доп модуле не цепляйте handler — хватит того, который сидит в верхнеуровневом логере
Офлайн
0
Спасибо! Помогло!
Но теперь интересует другой вопрос - а если мне в ещё одном модуле нужен будет вывод например только в файл - как запретить логгеру писать на стандартный вывод? Ведь, я так понял, хэндлеры цепляются один раз на все логгеры?
Офлайн
14
Не так.
Logger пишет во все свои handlers. Затем повторяет эту процедуру для всех parent logger раз за разом.
Так и получается, что ваше сообщение доходит до root logger, который его благополучно печатает.
Если у Logger поставить propagate = False — родителя просить не будет. Зачем нужно — не знаю. Пока еще не разу не требовалось применять.
Стандартная схема: root собирает всё, отдельные логеры пишут в свои источники если им нужно.
Офлайн