Как запустить экземпляр регистрации Python один раз - PullRequest
2 голосов
/ 08 ноября 2019

У меня есть проект Python 3 с несколькими сценариями .py.

main.py, script1.py, script2.py, script3.py, logger.py. main.py включает 3 скрипта / модуля.

Я создал класс логгера, унаследованный от модуля логирования. В настоящее время в каждом модуле .py мне нужно создать экземпляр класса logger и индивидуально установить loglevel / loggername / log path.

Есть ли способ установить уровень ведения журнала / loggername (или нет необходимости) /путь к журналу в main.py, чтобы в рамках этого проекта можно было передать один и тот же уровень без индивидуальной настройки в каждом скрипте?

1 Ответ

2 голосов
/ 08 ноября 2019

Конечно, есть способ. Более того, это наилучший способ .

Ведение журнала python является иерархическим по имени регистратора, поэтому журнал с именем «abc.def» рассматривается как дочерний элемент регистратора с именем logger. «а». Все регистраторы имеют предка по имени «корневой» регистратор.

Итак, если вы хотите (и обычно хотите) централизованную конфигурацию журналов, вам следует настроить корневой регистратор logging.getLogger().

Если вынапример, вы можете легко сделать это с помощью вспомогательной функции logging.basicConfig.

Тогда все остальные ваши регистраторы перейдут на эту конфигурацию.

Если вы хотите конкретную конфигурацию для некоторых журналов, вы можете настроитьих выборочно или с помощью «корня семейства» с использованием иерархии имен.

Редактировать: для конфигурации с несколькими журналами вы также можете иметь централизованный файл logging.conf, как объяснено здесь .

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