2014-07-17 17 views
7

Tôi muốn sentry/raven bỏ qua tất cả các ngoại lệ từ một chức năng nhất định hoặc mô-đun django, nhưng nhìn vào tài liệu và mã, tôi chỉ thấy một tùy chọn bỏ qua một ngoại lệ tùy chỉnh bằng cách thêm một thuộc tính bổ sung vào nó. Có cách nào để bỏ qua ngoại lệ theo tên chức năng hoặc tên mô-đun? Cảm ơn!sentry/raven với django: làm thế nào để bỏ qua một số trường hợp ngoại lệ?

Trả lời

5

Đọc qua nguồn gốc của con quạ Tôi thấy rằng nếu bạn muốn bỏ qua một trường hợp ngoại lệ nào đó bạn có thể thêm chúng vào IGNORE_EXCEPTIONS như thế này:

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

Như để loại trừ các module nhất định/tập tin một cách tốt nhất có lẽ sẽ là viết khách hàng của riêng bạn và quyết định có gửi tin nhắn đến sentry hay không. Nó nghĩ bạn nên ghi đè lên phương thức send vì nó có tất cả dữ liệu ở dạng dễ tiếp cận hơn.

Bạn có thể làm điều đó như thế này:

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) 

và sau đó thiết lập khách hàng tùy chỉnh của bạn trong settings.py:

SENTRY_CLIENT = 'path.to.module.MyClient' 

Nếu bạn muốn thực hiện các quy định phức tạp hơn cho bỏ qua có lẽ bạn nên kiểm tra những gì bạn có thể làm với dữ liệu đã cho (kwargs).

Các vấn đề liên quan