当DEBUG = True时,为什么要在哨兵中记录断言?

时间:2014-11-04 16:52:58

标签: django sentry raven

我正在部署sentry来处理我们的django错误消息。我已将django的LOGGING设置配置为仅在DEBUG = False时使用'filters': ['require_debug_false']进行记录。

如果我在django视图中手动记录错误,如下例所示,它已成功过滤,因此不会发送到哨兵:

import logging
logger = logging.getLogger(__name__)


def view_name(request):
    logger.error('An error message')
    ...

但是,如果我使用assert语句,如以下示例所示,它是过滤并且会被发送到哨兵:

import logging
logger = logging.getLogger(__name__)


def view_name(request):
    assert False, 'An error message'
    ...

值得注意的是,assert语句不会被发送到mail_admins处理程序,它也使用相同的过滤器。

有人可以帮助我防止在assert期间发送DEBUG = True错误{?}}

以下是我正在使用的软件包版本:

Django==1.6.7
raven==5.1.1

以下是我的settings.py的相关部分:

DEBUG = True
LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse'
        }
    },
    'formatters': {
        'simple': {
            'format': '%(levelname)s %(asctime)s %(message)s'
        },
    },
    'handlers': {
        'console': {
            'level': 'WARNING',
            'filters': ['require_debug_false'],
            'class': 'logging.StreamHandler',
            'formatter': 'simple'
        },
        'mail_admins': {
            'level': 'ERROR',
            'filters': ['require_debug_false'],
            'class': 'django.utils.log.AdminEmailHandler',
            'include_html': True,
        },
        'sentry': {
            'level': 'WARNING',
            'filters': ['require_debug_false'],
            'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler',
        },
    },
    'loggers': {
        '': {
            'handlers': ['console', 'mail_admins', 'sentry'],
            'level': 'WARNING',
            'propagate': False,
        },
    },
}

1 个答案:

答案 0 :(得分:3)

在raven-python 3.0.0中DEBUG setting in Django no longer disables Raven From documentation

  

Raven在Django中安装一个会自动报告的钩子   未被捕的例外

在您的情况下,assert生成uncaught exceptions AssertionError ,它已登录Sentry。

要禁用此功能,请设置dsn = None或删除dsn(source):

 RAVEN_CONFIG = {
    'dsn': None
 }