gpt4 book ai didi

python - 如何将异常发送到 django 项目的 Sentry

转载 作者:行者123 更新时间:2023-12-05 01:16:56 26 4
gpt4 key购买 nike

Sentry Django guide 之后我已经设置并部署了我的项目。

因此,我使用 SENTRY_DSN 值和 release 值配置 RAVEN_CONFIG,并包含 raven.contrib.django.raven_compat 在我的 INSTALLED_APPS 中。

我已经确认使用此配置,以下命令将在 Sentry 中正确生成一条消息。

python manage.py raven test

但是,我创建了以下 Django View 以引发异常,作为确认 Sentry 正常工作的替代方法,当我点击此 View 时,我收到 500 响应,但 Sentry 中没有显示任何内容。

app1/views.py

def error(request):
x = 1/0 # error for sentry testing

My expectation is that any exception (including 500 errors) that occurs in django will be sent to sentry without the need to use logging.

我对raven sentry配置的理解有误吗?或者,我需要配置其他东西吗?

我正在使用 django 的 LOGGING 设置,但目前我不关心这些消息是否“错误”或以其他方式发送到 Sentry 。我目前的主要目标是捕获发生的任何异常并将其发送给 Sentry 。

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'standard': {
'format': '{asctime} [{levelname:5}] ({name}) {funcName}: {message}',
'style': '{',
}
},
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'formatter': 'standard',
},
},
'loggers': {
'django': {
'handlers': ['console'],
'level': DJANGO_CORE_LOG_LEVEL, # Change to DEBUG to see db queries
},
'app1': {
'handlers': ['console'],
'level': DJANGO_LOG_LEVEL,
'propagate': True,
},
'app2': {
'handlers': ['console'],
'level': DJANGO_LOG_LEVEL,
'propagate': True,
}
},
}

更新

在本地使用 runserver 时,我已经设法让 app1.views.error View 向 Sentry 报告错误,但是在更新配置和部署之后它仍然部署时不工作。 (manage raven test 做)

最佳答案

来自 Sentry 文档

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

}

文档链接:https://docs.sentry.io/clients/python/integrations/django/

编辑:来自评论

try:
do something
except Exception:
from raven.contrib.django.raven_compat.models import client
client.captureException()

如果您不想手动执行此操作,并且希望在项目中任何地方触发异常 block 时随时进行 Sentry 日志记录,请使用上述基于日志记录的解决方案。

关于python - 如何将异常发送到 django 项目的 Sentry ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52288560/

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