У меня есть небольшой проект Python, который имеет следующую структуру -
Project
-- pkg01
-- test01.py
-- pkg02
-- test02.py
-- logging.conf
Я планирую использовать модуль регистрации по умолчанию для печати сообщений на стандартный вывод и файл журнала. Для использования модуля регистрации требуется некоторая инициализация -
import logging.config
logging.config.fileConfig('logging.conf')
logger = logging.getLogger('pyApp')
logger.info('testing')
В настоящее время я выполняю эту инициализацию в каждом модуле, прежде чем начать регистрировать сообщения. Можно ли выполнить эту инициализацию только один раз в одном месте, чтобы одни и те же настройки использовались повторно при ведении журнала по всему проекту?
package/__init__.py
. Обычно это не то место, куда вы помещаете if __name__ == '__main__'
код. Кроме того, пример Prost выглядит так, как будто он безоговорочно вызывает код конфигурации при импорте, что мне не подходит. Как правило, регистрация кода конфигурации должна выполняться в одном месте и не должна являться побочным эффектом импорта, за исключением случаев, когда вы импортируете __main__.
if __name__ == '__main__'
? (это не упоминается явно в вопросе, если это так)
fileConfig
каждый модуль, который ведет журналирование, если у вас нетif __name__ == '__main__'
логики во всех из них. Ответ prost не является хорошей практикой, если пакет является библиотекой, хотя он может работать для вас - не следует настраивать ведение журнала в пакетах библиотек, кроме добавления aNullHandler
.