我正在部署 Sentry 来处理我们的 django 错误消息。我已将 django 的 LOGGING
设置配置为仅在 DEBUG = False
时通过使用 'filters': ['require_debug_false']
进行记录。
如果我在 django View 中手动记录错误,如下例所示,它会被成功过滤,因此不会发送到 Sentry :
import logging
logger = logging.getLogger(__name__)
def view_name(request):
logger.error('An error message')
...
但是,如果我使用 assert
语句(如下例所示),它不会被过滤,并且会被发送到 Sentry :
import logging
logger = logging.getLogger(__name__)
def view_name(request):
assert False, 'An error message'
...
还值得注意的是,assert
语句不会发送到 mail_admins
处理程序,该处理程序也使用相同的过滤器。
有人可以帮助我防止在 DEBUG = True
时开始向 Sentry 发送 assert
错误吗?
以下是我正在使用的软件包版本:
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,
},
},
}
最佳答案
在 raven-python 3.0.0 DEBUG
setting in Django no longer disables Raven 中.
From documentation :
Raven to install a hook in Django that will automatically report uncaught exceptions
在您的情况下,assert
生成未捕获的异常
AssertionError,该异常记录在Sentry中。
要禁用此功能,请设置 dsn = None
或删除 dsn ( source ):
RAVEN_CONFIG = {
'dsn': None
}
关于django - 当 DEBUG = True 时,为什么断言会记录在 Sentry 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26740661/