【问题标题】:sentry/raven with django: how to ignore certain exceptions?sentry/raven with django:如何忽略某些异常?
【发布时间】:2014-09-07 17:52:55
【问题描述】:

我希望 sentry/raven 忽略来自某个函数或 django 模块的所有异常,但是查看文档和代码,我只看到了一个通过添加额外属性来忽略自定义异常的选项。有没有办法通过函数名或模块名忽略异常?谢谢!

【问题讨论】:

    标签: python django exception sentry


    【解决方案1】:

    通过阅读 raven 的源代码,我看到如果您想忽略某些异常,可以将它们添加到 IGNORE_EXCEPTIONS,如下所示:

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

    至于排除某些模块/文件,最好的方法可能是编写您自己的客户端并决定是否向哨兵发送消息。它认为您应该重写 send 方法,因为它以更易于访问的形式拥有所有数据。

    你可以这样做:

    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)
    

    然后在settings.py中设置您的自定义客户端:

    SENTRY_CLIENT = 'path.to.module.MyClient'
    

    如果您想实施更复杂的忽略规则,您可能应该检查您可以使用给定数据 (kwargs) 做什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-09
      • 1970-01-01
      • 2017-02-22
      • 1970-01-01
      • 2012-12-22
      • 1970-01-01
      • 2020-01-21
      • 2012-12-31
      相关资源
      最近更新 更多