如何在开发环境中配置Sentry raven客户端以避免发送异常并仍然正常工作?

26
我们正在运行一个Django服务器,并使用Sentry捕获异常。 当我们配置Sentry时,我们会在不同的settings.py文件中添加RAVEN_CONFIG
INSTALLED_APPS = (
    'raven.contrib.django.raven_compat'
)

RAVEN_CONFIG = {
    'dsn': 'https://*****@app.getsentry.com/PORT_NUMBER',
}

我们在这里读到可以只使用空字符串DSN属性。但是当我们像这里所示运行python manage.py raven test时,会得到以下结果:
raven.exceptions.InvalidDsn: Unsupported Sentry DSN scheme:  ()

最好的解决方案是我们始终可以使用Raven客户端,而设置文件将定义是否发送异常。
另一个要求是我们想要使用Client模块并捕获异常。为此,我们必须设置一些DSN值:
from raven import Client
client = Client('https://<key>:<secret>@app.getsentry.com/<project>')

所以不能不设置 DSN 值。
2个回答

20

我们在这里看到可以使用一个空字符串 DSN 属性。

你不应该将DSN设置为空字符串,而是在开发环境配置中首先不要指定DSN设置

RAVEN_CONFIG = {}

编辑了问题以解释为什么这是不可能的。简而言之,我们想使用Python raven客户端模块,该模块在初始化时需要DSN。 - Agam Rafaeli-Farhadian
提醒:您的配置可能不允许空格,请使用 RAVEN_CONFIG={} - TheRealFakeNews

10

文档并没有说必须设置DSN值,只是提供了一个设置它的示例。

文档没有规定必须设置DSN的值,只是提供了一个如何设置它的示例。

In [1]: from raven import Client

In [2]: client = Client()
Raven is not configured (logging is disabled). Please see the documentation for more information.

In [3]: client.captureMessage('hello')  # it's a noop - no error, no capture.

需要注意的是,在传递 DSN 参数时应该传递 None(或者根本不传),而不是空字符串,否则会触发 InvalidDsn: Unsupported Sentry DSN scheme 错误。

另外,如果您不想在日志中看到 Raven is not configured (logging is disabled)... ,您可以这样将其禁止:

>>> import logging
>>> logging.getLogger('raven').setLevel(logging.WARNING)

我认为问题中的“仍然工作”部分意味着将Sentry信息发送到某个地方(例如日志)。有没有办法记录它本应该发送的内容,而不是完全没有帮助的“未配置”消息(可以在启动时记录一次)? - Steve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接