В документации Sentry предлагается следующая настройка для LOGGING
:
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'root': {
'level': 'WARNING',
'handlers': ['sentry'],
},
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s '
'%(process)d %(thread)d %(message)s'
},
},
'handlers': {
'sentry': {
'level': 'ERROR', # To capture more than ERROR, change to WARNING, INFO, etc.
'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler',
'tags': {'custom-tag': 'x'},
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'verbose'
}
},
'loggers': {
'django.db.backends': {
'level': 'ERROR',
'handlers': ['console'],
'propagate': False,
},
'raven': {
'level': 'DEBUG',
'handlers': ['console'],
'propagate': False,
},
'sentry.errors': {
'level': 'DEBUG',
'handlers': ['console'],
'propagate': False,
},
},
}
Все три регистратора выбирают console
для своего обработчика. Зачем Sentry когда-либо обрабатывать журналы? Это потому, что все три регистратора наследуются от регистратора root
, поэтому установка console
в качестве обработчика добавляет консоль к существующему регистратору сторожевого устройства? Или что-то еще?
Затем комментарий к обработчику sentry
гласит: «Чтобы захватить больше, чем ОШИБКА, измените на ПРЕДУПРЕЖДЕНИЕ, ИНФО и т. Д.». Зачем менять это значение на INFO
обрабатывать INFO
ошибки уровня? Регистратор root
установил WARNING
как самый низкий уровень, и как любой обработчик может отправить ошибку уровня INFO
в обработчик sentry
?
Например, если я нахожусь внутри файла типа accounts/models.py
, и я звоню
LOGGER = logging.getLogger(__name__)
LOGGER.info('test')
Это должно создать регистратор с именем accounts.models
, который должен наследоваться от регистратора root
. документы говорят, что:
Когда сообщение отправляется регистратору, уровень журнала сообщения сравнивается с уровнем журнала регистратора. Если уровень журнала сообщения соответствует или превышает уровень журнала самого регистратора, сообщение подвергнется дальнейшей обработке. Если этого не произойдет, сообщение будет проигнорировано.
Зачем LOGGER.info('test')
отправлять что-либо в Sentry в этом случае, если LOGGER
наследует от регистратора root
, который игнорирует все на уровне ниже WARNING
?