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