Я бы хотел, чтобы sentry/raven игнорировал все исключения из определенной функции или модуля django, но, изучив документы и код, я увидел только возможность игнорировать пользовательское исключение, добавив к нему дополнительный атрибут. Есть ли способ игнорировать исключения по имени функции или имени модуля? Спасибо!
sentry/raven с django: как игнорировать определенные исключения?
Ответы (1)
Прочитав исходный код ворона, я увидел, что если вы хотите игнорировать определенные исключения, вы можете добавить их в 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).
person
slafs
schedule
28.08.2014