Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 11, 2010 20:46:51

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Как правильно готовить logging.

Андрей Светлов
про дескриптор была древняя статья 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 за глаза хватит, нет?



Офлайн

#2 Ноя. 12, 2010 15:02:28

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Как правильно готовить logging.

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

Когда я писал, что настройка делается по именам, имел в виду следующее. Конфигуратор не импортирует код библиотеки, которую он настраивает. Достаточно logging.getLogger(name). Думаю, вы так и делаете.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version