2014-07-17 17 views
7

Chciałbym, aby wartownik/kruk ignorował wszystkie wyjątki z określonej funkcji lub modułu django, ale patrząc na dokumenty i kod, widziałem tylko opcję zignorowania niestandardowego wyjątku przez dodanie do niego dodatkowego atrybutu. Czy istnieje sposób, aby zignorować wyjątki według nazwy funkcji lub nazwy modułu? Dzięki!sentry/raven z django: jak zignorować pewne wyjątki?

Odpowiedz

5

Czytając źródła kruka Widziałem, że jeśli chcesz ignorować pewne wyjątki można dodać je do IGNORE_EXCEPTIONS tak:

RAVEN_CONFIG = { 
    'dsn': '...', 
    'IGNORE_EXCEPTIONS': ['exceptions.ZeroDivisionError', 'some.other.module.CustomException'], 
    ... 
} 

chodzi o wykluczenie niektórych modułów/files najlepszy sposób prawdopodobnie byłoby napisać własnego klienta i zdecydować, czy wysłać wiadomość do wartownika. Uważa, że ​​należy zastąpić metodę send, ponieważ ma ona wszystkie dane w bardziej przystępnej formie.

Można to zrobić tak:

from raven.contrib.django.client import DjangoClient 


class MyClient(DjangoClient): 

    def send(self, **kwargs): 
     ''' 
     check if culprit (event name) should be skipped 
     ''' 
     if kwargs.get('culprit', '').startswith('my.module.to.skip'): 
      self.logger.info('Skipping entry') 
     else: 
      return super(MyClient, self).send(**kwargs) 

a następnie ustawić swój własny klienta w settings.py:

SENTRY_CLIENT = 'path.to.module.MyClient' 

Jeśli chcesz realizować bardziej skomplikowane zasady ignorując powinieneś sprawdź co może zrobić z podanymi danymi (kwargs).

Powiązane problemy