2013-11-28 1 views
7

Я хочу настроить регистратор Sentry для проекта Django. Я буду определять обработчик sentry и поместит этот обработчик в корневой журнал с уровнем error.Корневой регистратор в dictconfig

Согласно документации logging модуля, есть специальный root ключ:

root - это будет конфигурация для корневого регистратора. Обработка конфигурации будет такой же, как для любого регистратора, за исключением того, что установка propagate не применима.

В то же время в местах other регистратор с именем '' используется для хранения конфигурации для корневого регистратора.

Имеет ли такой эффект? Что предпочтительнее?

>>> import logging 
>>> logging.getLogger('') is logging.root 
True 
>>> 

ответ

6

В любом случае это будет работать, поскольку регистратор с именем '' является корневым регистратором. Задание root позволяет уточнить, что вы делаете, если вы настраиваете множество регистраторов - конфигурация регистратора может быть потеряна внутри группы других, тогда как ключ root находится рядом с ключом loggers и поэтому (теоретически) должен выделяться больше.

+1

Это значение * не * представляется правильным при определении конфигурации ведения журнала с помощью атрибута [settings.LOGGING] (https://docs.djangoproject.com/en/dev/topics/logging/#configuring-logging) в Django 1.7! Я регистрируюсь в названном логгере в модуле просмотра, и запись журнала записывается, если я определил регистратор с именем '' ''в моей' LOGGING', но * not *, если я назову его '' root''. К сожалению, в документации Django отсутствует инструкция о том, как вообще обращаться с корневым регистратором. –

+4

@hheimbuerger Это не названный корень в loggers dict, он параллелен логическим файлам dict. Дополнительную информацию см. В https://docs.python.org/2/library/logging.config.html#dictionary-schema-details. –

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

  • Нет связанных вопросов^_^