Уведомления

Группа в Telegram: @pythonsu

#1 Июль 1, 2011 18:34:52

der_fenix
От:
Зарегистрирован: 2011-07-01
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Python2 logger

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

Инициализация логгеров в основном и дополнительном модулях соответственно ниже
http://pastebin.com/sWYZm1Pk
http://pastebin.com/HAsUmfWW



Офлайн

#2 Июль 1, 2011 18:36:32

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Python2 logger

В доп модуле не цепляйте handler — хватит того, который сидит в верхнеуровневом логере



Офлайн

#3 Июль 1, 2011 21:59:51

der_fenix
От:
Зарегистрирован: 2011-07-01
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Python2 logger

Спасибо! Помогло!
Но теперь интересует другой вопрос - а если мне в ещё одном модуле нужен будет вывод например только в файл - как запретить логгеру писать на стандартный вывод? Ведь, я так понял, хэндлеры цепляются один раз на все логгеры?



Офлайн

#4 Июль 1, 2011 22:42:15

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Python2 logger

Не так.
Logger пишет во все свои handlers. Затем повторяет эту процедуру для всех parent logger раз за разом.
Так и получается, что ваше сообщение доходит до root logger, который его благополучно печатает.
Если у Logger поставить propagate = False — родителя просить не будет. Зачем нужно — не знаю. Пока еще не разу не требовалось применять.
Стандартная схема: root собирает всё, отдельные логеры пишут в свои источники если им нужно.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version