【问题标题】:Why are assertions being logged in sentry when DEBUG = True?为什么当 DEBUG = True 时断言被记录在哨兵中?
【发布时间】:2014-11-04 16:52:57
【问题描述】:

我正在部署哨兵来处理我们的 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,
        },
    },
}

【问题讨论】:

    标签: django sentry raven


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2019-10-21
      • 2020-12-03
      • 2014-08-07
      • 2021-09-09
      • 2014-10-26
      • 1970-01-01
      • 2011-02-11
      • 2016-04-25
      • 2021-06-04
      相关资源
      最近更新 更多