我正在使用python-raven自动捕获我的django项目中的所有500个,效果很好。我还转发了一些我处理的异常,并用特殊标签附加它们,以便能够过滤掉它们。问题是我无法过滤缺少特定标签的消息,因此我想为所有消息设置默认标签,但无法使其正常工作。
我已经尝试了以下内容,但它只是被忽略了。
RAVEN_CONFIG = {
'dsn': 'udp://x:y@z:q/w',
'tags': {'testtag': 'value'},
}
有谁知道如何向哨兵发送默认标签?
以下内容在设置模块中对我有用。它将环境变量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
方法。
在记录消息之前,您可以为记录器指定不同的名称。这将允许您按哨兵服务器中的"记录器"进行过滤。
在仔细研究之后,这似乎根本不可能 ATM。