Как предотвратить реконфигурацию корневого логгера по модулям в многомодульном проекте? - PullRequest
0 голосов
/ 22 сентября 2018

Я использую Python 2.7 для многомодульного проекта.Как уже упоминалось здесь Я настроил вход в свой main.py, как показано ниже

logging.basicConfig(
    format='%(asctime)s,%(msecs)d %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s',
    datefmt='%d-%m-%Y:%H:%M:%S',
    filename='/home/ubuntu/logs/centralized_upgrade.log',
    level=logging.INFO)

В каждом другом модуле, где бы мне ни приходилось регистрироваться, я просто звоню, как показано ниже

import logging
...
logging.info('Hello World')

Но у меня возникает сомнение, если в каком-то модуле, если корневой логгер снова переконфигурирован (может быть что-то вроде ниже)

logging.basicConfig(
        format='%(asctime)s,%(msecs)d %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s',
        datefmt='%d-%m-%Y:%H:%M:%S',
        filename='/home/ubuntu/logs/module.log',
        level=logging.INFO)

, тогда все сообщения журнала начнут входить в новый файл.Может кто-нибудь дать мне знать, как лучше всего с этим справиться?Как я могу предотвратить перенастройку корневого регистратора?Я предполагаю, что конфигурация регистрации должна оставаться такой же, как определено в main.py, независимо от какой-либо реконфигурации, выполненной в любых дочерних модулях.

Во многих местах рекомендуется не использовать корневой регистратор и определять регистратор, как упомянуто здесь .Но, насколько я понимаю, в этом случае также, если какой-то модуль настраивает корневой регистратор, журнал может перейти в другой файл, поскольку все регистраторы наследуются от корневого регистратора.

1 Ответ

0 голосов
/ 26 января 2019

Публикация комментария @Lukas Graf в качестве ответа здесь

Не полный ответ, но: logging.basicConfig ничего не сделает, если для корневого регистратора уже настроены обработчики.Поэтому, если он вызывается несколько раз, только первая из них будет применять данную конфигурацию к корневому логгеру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...