【问题标题】:Django sentry default tagsDjango sentry 默认标签
【发布时间】:2013-10-25 09:19:22
【问题描述】:

我正在使用 python-raven 自动捕获我的 django 项目中的所有 500 个,并且效果很好。我还转发了一些我处理的异常并将它们附加一个特殊标签以便能够将它们过滤掉。问题是我无法过滤缺少特定标签的消息,所以我想为所有消息设置一个默认标签,但无法让它工作。

我尝试了以下方法,但它被忽略了。

RAVEN_CONFIG = {
    'dsn': 'udp://x:y@z:q/w',
    'tags': {'testtag': 'value'},
}

有人知道如何将默认标签发送给哨兵吗?

【问题讨论】:

    标签: python django sentry raven


    【解决方案1】:

    以下在设置模块中对我有用。 它将环境变量DJANGO_ENVDIR 添加到正在发送的每条消息中。

    from raven.contrib.django.client import DjangoClient as RavenDjangoClient
    class SentryDjangoClient(RavenDjangoClient):
        def build_msg(self, *args, **kwargs):
            data = super(RavenDjangoClient, self).build_msg(*args, **kwargs)
            data['tags']['ENVDIR'] = os.environ.get('DJANGO_ENVDIR', 'unset')
            return data
    
    if get_env_var('SENTRY_DSN', False):
        RAVEN_CONFIG = {
            'dsn': get_env_var('SENTRY_DSN'),
            # NOTE: timeout set via DSN
        }
        SENTRY_CLIENT = 'project.settings.base.SentryDjangoClient'
    

    您需要根据您放置 SentryDjangoClient 类的位置来调整 SENTRY_CLIENT 设置,该类扩展了 build_msg 方法。

    【讨论】:

    • 如果您一直在控制台中进行操作,您可能已经看到 Sending message of length 消失了。别担心,只需确保您的根记录器(或 SentryDjangoClient 所在的任何位置)日志级别设置为 DEBUG
    【解决方案2】:

    您可以在记录消息之前为记录器分配不同的名称。这将允许您按 Sentry 服务器中的“记录器”进行过滤。

    【讨论】:

      【解决方案3】:

      在仔细研究之后,这似乎根本不可能是 ATM。

      【讨论】:

        猜你喜欢
        • 2019-01-13
        • 2016-08-22
        • 2022-10-14
        • 1970-01-01
        • 2017-01-02
        • 1970-01-01
        • 2023-03-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多