【发布时间】:2014-09-07 17:52:55
【问题描述】:
我希望 sentry/raven 忽略来自某个函数或 django 模块的所有异常,但是查看文档和代码,我只看到了一个通过添加额外属性来忽略自定义异常的选项。有没有办法通过函数名或模块名忽略异常?谢谢!
【问题讨论】:
标签: python django exception sentry
我希望 sentry/raven 忽略来自某个函数或 django 模块的所有异常,但是查看文档和代码,我只看到了一个通过添加额外属性来忽略自定义异常的选项。有没有办法通过函数名或模块名忽略异常?谢谢!
【问题讨论】:
标签: python django exception sentry
通过阅读 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) 做什么。
【讨论】: