django - 使用没有 raven 的新 sentry_sdk 为 Django 配置 Sentry 处理程序
问题描述
用于 django 的新 sentry_sdk 提供了非常简短的安装(通过标记为弃用的 raven 进行集成)。
import sentry_sdk
from sentry_sdk.integrations.django import DjangoIntegration
sentry_sdk.init(
dsn="https://<key>@sentry.io/<project>",
integrations=[DjangoIntegration()]
)
以前,人们会像这样使用 raven 作为处理程序类来配置哨兵。
'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'},
},
...
...
'loggers':{
'project.custom':{
'level': 'DEBUG',
'handlers': ['sentry', 'console', ,]
}
挑战在于 raven 不接受 SENTRY_DSN 的新格式。在格式https://<key>@domain.com/project/
旧格式沿线https://<key>:<secret>@domain.com/project
。乌鸦会扔InvalidDSN with the old format
。旧的 DSN 密钥被标记为弃用。
该文档对如何定义处理程序非常沉默。显然已弃用的 raven 对新的密钥格式不满意。我可以依赖旧的 DSN deprecated format
,但会感谢有关如何使用新格式配置处理程序的建议。
解决方案
我已经进行了一些阅读和练习。新版本不以任何方式依赖 raven。所以你必须删除所有对raven
. insettings.py
以及对 raven 客户端的任何引用。
无需担心 sentry_sdk 的处理程序。仅声明控制台的处理程序并将该处理程序附加到根据需要定义的每个其他记录器就足够了。
'handlers':{
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'verbose'
}
# No need to define a sentry handler, defined by the integration.
}
'loggers':{
'project.custom': {
'level': 'DEBUG',
'handlers': ['console', ], # You dont have to add sentry handler here
}
}
另外注意logger.exception
将被忽略,您将不得不使用
capture_exception from sentry_sdk or capture_message from sentry_sdk
显然,由于多种原因,事件可能未登录到哨兵,但是 logger.exception 应该始终有效
推荐阅读
- excel - 在 Excel 中的复制粘贴事件期间不遵循数据验证规则
- c# - 如何将多个表作为一个 XML 返回?
- react-native - 如何使用 expo FileSystem 获取文件扩展名?
- bash - 当它们来自命令行时,我们如何 egrep 特殊字符?
- javascript - 如何从javascript中提取字符串
- python - python 在初始化超过 31 个元素时出现问题
- c - 检查是否设置或清除了多个位
- ios - 自定义嵌套对象的 Swift 编码技术?
- python - Django - csv.reader 和 save()/update
- python - 从图像中去除噪声,使其准备好使用 python 进行 tesseract ocr 并打开 cv