我是否需要显式记录哨兵的消息才能在Django中工作

时间:2011-07-09 09:51:56

标签: django logging sentry

我已安装Sentry进行邮件记录。我是哨兵的新手,所以我不知道它是如何运作的。

它是仅记录那些使用logger ("error something")放入我的文件的消息,还是记录它自动记录的任何错误

假设我没有在我的视图中写过任何日志语句。现在,如果我得到任何异常,那么sentry会记录它,或者我必须编写哨兵的每个例外

有没有办法在不输入任何代码的情况下自动记录所有错误,因为我不知道可以发生什么类型的异常

1 个答案:

答案 0 :(得分:6)

Sentry auto捕获所有异常并记录它们。至于记录本身(使用记录器),默认情况下它不会捕获它们。你必须设置它。

您可以查看如何设置记录here。警告:起初看起来确实很难。

编辑摘自官方文档(07/26/2018):

  

与日志记录集成   要与标准库的日志记录模块集成,并将所有ERROR及以上消息发送到哨兵,可以使用以下配置:

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