LINUX.ORG.RU

Разделить логгеры питона

 , ,


0

2

Что имеем:
- stdout (консоль)
- файлы: logs/main.log, logs/parse.log, logs/comment.log
- разные уровни логирования (в зависимости от того как был запущен скрипт, с какими параметрами)
- пара «своих» логгеров: parse, comment
- все остальные логгеры - условно root - всё остально для чего предусмотрено логирование (т.е. например дебаг каких-нибудь инклудов стандартных)

Что я хочу сделать:
- все логгеры должны писать в stdout (например при консольном выполнении «python script.py»
- мои 2 должны дублировать в соответствующие файлы
- всё остальное должно дублироваться в 3й файл
- все файлы не должны содержать копии других логгеров

Прошу гурупитонов помочь разобраться.

Собственно я споткнулся об то, что если настроить logging.basicConfig(...) либо просто logging.getLogger() (т.е. без указания имени логгера), а потом еще 2 логгера (уже с указанием имени), то эти 2 логгера будут флудить в т.ч. туда же куда всё остальное.
Если обойтись без настройки basicConfig, использовать logging.getLogger('root'), например, тогда я теряю все прочие выводы (например вывод логгера git.Cmd).
Т.е. думалось получится задать логгер «по умолчанию» (в консоль и в main.log) но для своих 2х писать только в консоль и отдельный файл. Но по факту как только задаешь «по умолчанию» - оно коллекционирует все логгеры.

А что у тебя не работает с logger.addHandler? Ты можешь прикрепить к одному логеру несколько хендлеров и каждому хендлеру определить уровень вложенности через setLevel.

Aswed ★★★★★ ()
Ответ на: комментарий от Aswed

У меня не работает: при создании собственного логгера этот новый работает хорошо, но вывод логгера дублируется в основной логгер, т.е. при выполнении скрипта из консоли вывод дублирует все записи

ilmenshik ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.