2014-01-27 4 views
0

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

logging.basicConfig(filename='server.log',level=logging.INFO,format='%(asctime)s\t%(levelname)s\t%(message)s') 

Теперь я хочу добавить несколько обработчиков в регистратор. Это около 15 строк кода. Я не хочу помещать его в основной файл server.py, чтобы он удерживал самую важную информацию о сервере. Вопрос в том, каков предложенный способ сделать это в python.

Я переместил свои определения протоколирования обработчиков в другой модуль и импортировать его:

import logdefs 

, но этот импорт никогда не используется (я никогда не использую logdefs.something). Это нормально? Другой вопрос: как работает модуль регистрации, загруженный с подмодуля server.py и все параметры ведения журнала доступны для остальной части его приложения (модификации являются глобальными, а не локальными)? Доступен ли доступ к содержимому модуля журнала как своего рода одноэлементный?

ответ

1

Вместо вызова logging.basicConfig, вы могли бы назвать

logging.config.fileConfig(config_file) 

и поместите configuration in a file.


Для вас вторым вопроса, если вы посмотрите на logging/__init__.py source code, вы увидите

root = RootLogger(WARNING) 
Logger.root = root 
Logger.manager = Manager(Logger.root) 

Этот код вызывается, когдаСначала импортируется. Итак, когда подмодуль модифицирует или имеет доступ к корневому журналу, он влияет на один и тот же корневой журнал, как и модуль, который сначала импортировал logging.

Смежные вопросы