2016-07-29 2 views
-1

Некоторые модули (paramiko), которые я использую в моем коде, уже настроены на регистрацию, которая производит тонны сообщений регистрации.Запись в Python3 исключает определенные модули?

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

Logging настраивается глобально с logging.basicConfig()

+0

Как вы настраиваете журналирование сообщений для печати? Вы используете 'basicConfig'? Вы создаете обработчик потока ведения журнала? –

+0

Да basicConfig() глобально. обработчик не использовался. – sdaffa23fdsf

ответ

0

Не используйте basicConfig. Убедитесь, что ваши модули регистрируются в своем журнале, а не в корневом журнале.

log = logging.getLogger('my_package') 

log.debug('a message') 

Убедитесь, что только настройки лесозаготовительные обработчиков в одном модуле, как правило, это делается в сценарии вы называете, что запускает программу. Получите тот же регистратор, который используется в вашем пакете, а затем добавьте обработчик в только, который регистрирует.

log = logging.getLogger('my_package') 
handler = logging.StreamHandler() 
handler.setLevel(logging.DEBUG) 
log.addHandler(handler) 

Вы должны видеть только протоколирование сообщений от my_package логгера, а также от детей этого регистратора.

Общая конвенция, чтобы положить это в верхней части каждого модуля у вас есть, что собирается использовать лесозаготовки

log = logging.getLogger(__name__) 

Таким образом, регистратор используется для каждого модуля будет просто путь импорта для этого модуля , Поэтому, если вы импортируете этот модуль, выполнив import package.module, имя регистратора также будет "package.module". Таким образом, легко указать конкретный регистратор, который вы хотите зарегистрировать.

0

Если вы check out the logging module source или the docs вы увидите, что basicConfig настраивает корневой регистратор, который является один и тот же регистратор, который вы получите через

logging.getLogger('') 

Если вы читаете лесозаготовительных документы, вы увидите, что basicConfig - это именно тот - базовый конфиг. Вы действительно следует использовать что-то вроде этого:

logger = logging.getLogger(__name__) 

Вы можете добавить различные обработчики для вашего регистратора:

logger.setLevel(logging.DEBUG) 
h = logging.StreamHandler() 
h.setLevel(logging.DEBUG) 
logger.addHandler(h) 

Теперь ваш регистратор будет отображать только сообщения журнала из вашей программы ,