gpt4 book ai didi

python - 为什么 Sentry 推荐的 Django 日志记录配置会沉默来自 django.db.backends 的日志记录?

转载 作者:太空宇宙 更新时间:2023-11-04 02:05:05 28 4
gpt4 key购买 nike

(现已弃用)Sentry Django 集成文档推荐以下 LOGGING 配置 ( https://docs.sentry.io/clients/python/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。

Sentry 文档似乎甚至没有承认这个记录器的存在。此配置按原样呈现,作为让 Django 登录到 Sentry 的一种方式。

  1. 我的解读正确吗?
  2. 你能想出任何理由吗?您似乎想要将 django.db.backends.* >= WARNING 日志条目发送到 Sentry。

最佳答案

django.db.backends 包含每个 SQL 查询的日志,这是 Django 使用它的唯一目的。据我所知,此命名空间上从未记录过任何警告或错误。

我们想忽略来自 django.db.backends 的日志记录面包屑,因为我们已经有一个自定义 Hook 用于在 Django 中捕获 SQL 查询,这样我们就可以在 UI 中以不同于其他面包屑的方式显示它们。

Raven 将此逻辑卸载给用户,新的 SDK sentry_sdk 在内部忽略了记录器。您可以在此处找到等效项:https://github.com/getsentry/sentry-python/blob/fde5576e489dd7926fce7bae7be8399021cdde14/sentry_sdk/integrations/django/init.py#L365

关于python - 为什么 Sentry 推荐的 Django 日志记录配置会沉默来自 django.db.backends 的日志记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54897896/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com