3

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

我已经尝试了以下方法,但它只是被忽略了。

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

有谁知道如何将默认标签发送到哨兵?

4

3 回答 3

8

以下在设置模块中对我有用。它将环境变量添加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方法。

于 2014-01-20T19:45:08.937 回答
0

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

于 2014-01-14T17:37:25.967 回答
-1

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

于 2013-11-03T09:59:06.530 回答