Нужно ли явно регистрировать сообщения для часового для работы в Django - PullRequest
2 голосов
/ 09 июля 2011

Я установил Sentry для регистрации сообщений.Я новичок в страже, поэтому я не знаю, как это работает.

Регистрирует ли он только те сообщения, которые помещаются в мои файлы с logger ("error something"), или при любой другой ошибке автоматически регистрирует ее

Предположим,я не написал никакого заявления журнала в моем представлении.Теперь, если я получу какое-либо исключение, то часовой будет регистрировать его, или мне придется запрограммировать каждое исключение для часового

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

1 Ответ

6 голосов
/ 09 июля 2011

Sentry auto ловит все исключения и регистрирует их.Что касается самой регистрации (используя регистратор), она не перехватывает их по умолчанию.Вы должны настроить его.

Вы можете посмотреть, как настроить ведение журнала здесь .Предупреждение: сначала это кажется трудным.

Редактировать: Выдержка из официальных документов (26.07.2008):

Интеграцияс ведением журнала: Для интеграции с модулем ведения журнала стандартной библиотеки и отправки всех сообщений об ОШИБКАХ и выше к сторожевому может использоваться следующая конфигурация:

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,
        },
    },
}

Использование: Использование ведения журнала работает так же, как и вне Django, с добавлением дополнительного ключа запроса в дополнительных данных:

logger.error('There was some crazy error', exc_info=True, extra={
    # Optionally pass a request and we'll grab any information we can
    'request': request,
})
...