Что имеем:
- 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х писать только в консоль и отдельный файл. Но по факту как только задаешь «по умолчанию» - оно коллекционирует все логгеры.