2013-10-25 143 views
2

我正在使用python-raven自動捕捉我的django項目中的所有500,並且它工作得很好。我還轉發了一些我處理的異常,並附加了一個特殊的標記,以便能夠將它們過濾掉。問題是,我無法篩選缺少特定標記的郵件,因此我想爲所有郵件設置默認標記,但無法使其工作。Django哨兵默認標籤

我試過以下,但它只是被忽略。

RAVEN_CONFIG = { 
    'dsn': 'udp://x:[email protected]:q/w', 
    'tags': {'testtag': 'value'}, 
} 

有誰知道如何發送一個默認標記哨兵?

回答

0

看了一眼之後,看起來好像這根本不可能是ATM。

0

在記錄消息之前,您可以爲記錄器分配一個不同的名稱。這將允許您通過Sentry服務器中的「記錄器」進行過濾。

7

在設置模塊中,以下方法適用於我。 它將環境變量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' 

您需要調整SENTRY_CLIENT設置,根據你放置SentryDjangoClient類,它擴展了build_msg方法。

+0

如果您一直關注控制檯,您可能已經看到'發送長度消息'消失。不要擔心,只要確保您的根記錄器(或任何「SentryDjangoClient」存在的地方)日誌級別設置爲「DEBUG」。 – Kurt