Найти - Пользователи
Полная версия: Как правильно готовить logging.
Начало » Python для экспертов » Как правильно готовить logging.
1 2
Ed
Андрей Светлов
про дескриптор была древняя статья http://www.developers.org.ua/archives/asvetlov/2007/09/22/python-logging/
ага, теперь понятно о чем речь, спасибо. Кстати, там ошибка в примере.
Вместо ‘DEBUG:sample_mod.A.0x009fb650:class logger message’ Нужно ‘DEBUG:sample_mod.A.0x009fb650:instance logger message’

Глобальные логеры - это нормально. Они такие по определению - потому что все равно регистрируются в глобальной структуре внутри logging.
Это да, но заводить еще одну глобальную переменную для уже глобальной сущности мне показалось странным. Но другие варианты были еще страннее :)

Использующий логирование код не должен этот логер настраивать. Получил и пиши в него - и все.
именно так и сделано. Настройка происзодит только при старте приложения (случай name == __main__), либо принудительно вызовом configure_logging.

Настройка делается по именам логеров, так что импортировать библиотечный код не нужно.
А вот это я не понял.

Еще вопрос по дескрипторам: Где реально используются class логеры? Мне казалось, что instance за глаза хватит, нет?
Андрей Светлов
На самом деле как раз instance logger мало полезен. Дело в том, что логеры живут вечно. Поэтому в имени указываются только две последние цифры адреса.
Этого обычно достаточно, чтобы различать источники.
Обычно хватает просто полного имени класса - так что class logger используется чаще.

Когда я писал, что настройка делается по именам, имел в виду следующее. Конфигуратор не импортирует код библиотеки, которую он настраивает. Достаточно logging.getLogger(name). Думаю, вы так и делаете.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB