(现已弃用)哨兵django集成文档建议以下LOGGING
配置(https://docs.sentry.io.io/clients/python/python/integrations/integrations/django/):
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.db.backends': {
'level': 'ERROR',
'handlers': ['console'],
'propagate': False,
},
对我来说,这读到源自django.db.backends
(和后代)的日志条目仅发送到控制台,并且不传播到根记录器(已配置为将日志条目>= WARNING
发送到Sentry。
哨兵文档似乎甚至都不承认该记录器的存在。此配置是作为将Django登录到Sentry的一种手段。
- 我对此的阅读是正确的吗?
- 您能想到任何理由吗?似乎您想将
django.db.backends.*
>= WARNING
日志条目发送到Sentry。
django.db.backends
都包含每个SQL查询的日志,这是Django唯一使用的日志。据我所知,在此命名空间上没有记录的警告或错误。
我们想忽略django.db.backends
的面包屑,因为我们已经有一个自定义挂钩来捕获Django中的SQL查询,因此我们可以与UI中的其他面包屑以不同的方式显示它们。
Raven将此逻辑卸载给用户,新的SDK sentry_sdk
在内部忽略了记录器。您可以在此处找到同等的内容:https://github.com/getsentry/sentry-python/blob/blob/fde576e489dd7926fce7bae7be7be7be7be7be7be7be7be7be7be8399021cddde14/>