我希望sentry / raven忽略来自某个函数或django模块的所有异常,但是查看文档和代码,我只看到了一个通过向其添加额外属性来忽略自定义异常的选项。有没有办法忽略函数名称或模块名称的异常?谢谢!
答案 0 :(得分:7)
通过乌鸦来源阅读我看到如果您想忽略某些例外,可以将它们添加到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)。