【问题标题】:How do you configure a Sentry raven client in a development environment to not send exceptions and still work?如何在开发环境中配置 Sentry raven 客户端以不发送异常并仍然工作?
【发布时间】:2016-06-23 15:55:18
【问题描述】:

我们正在运行一个 Django 服务器并使用 Sentry 来捕获异常。当我们配置 Sentry 时,我们添加 RAVEN_CONFIG 我们不同的 settings.py 文件:

INSTALLED_APPS = (
    'raven.contrib.django.raven_compat'
)

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

我们读到here,我们可以只使用一个空字符串DSN 属性。虽然当我们按照here 的描述运行python manage.py raven test 时,我们得到:

raven.exceptions.InvalidDsn: Unsupported Sentry DSN scheme:  ()

最好的解决方案是我们始终可以使用 Raven 客户端,并且设置文件将定义是否发送异常。

另一个要求是我们想使用Client 模块并捕获异常。对于这个we have to set 一些DSN 值:

from raven import Client
client = Client('https://<key>:<secret>@app.getsentry.com/<project>')

所以不可能不设置DSN

【问题讨论】:

    标签: python django sentry raven


    【解决方案1】:

    文档没有说你必须设置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.
    

    请务必注意,您应该将 None(或根本不传递)作为 DSN 参数而不是空字符串传递,否则会引发 InvalidDsn: Unsupported Sentry DSN scheme

    另外,如果您不喜欢日志中的 Raven is not configured (logging is disabled)...,您可以将其静音:

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

    【讨论】:

    • 我认为问题的“仍然有效”部分意味着将哨兵信息发送到某处(例如日志)。有没有办法让它记录它会发送的内容,而不是完全无用的“未配置”消息(它可以在启动时记录一次)?
    【解决方案2】:

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

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

    RAVEN_CONFIG = {}
    

    【讨论】:

    • 编辑了问题以解释为什么这是不可能的。 TL;DR - 我们想使用在初始化时需要 DSN 的 python raven 客户端模块
    • 仅供参考:您的配置可能不允许空格,所以只需 RAVEN_CONFIG={}
    猜你喜欢
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多