Исключая некоторые исключения из сообщения Sentry - PullRequest
0 голосов
/ 26 апреля 2018

Веб-сервис на основе пружинной загрузки использует Sentry, как описано в документах .Он работает нормально, но некоторые исключения не должны отправляться в Sentry, например, исключение выдается для возврата HTTP-статуса 410 по определенным запросам:

// Kotlin code, but in Java it would be similar.
@ResponseStatus(value = HttpStatus.GONE)
class GoneException(msg: String) : RuntimeException(msg) {
}

Как я могу сказать, что мой sentryExceptionResolver пропуститьэти исключения?

1 Ответ

0 голосов
/ 26 апреля 2018

В python все просто, просто добавьте приведенный ниже код в конфигурационный файл, чтобы игнорировать многочисленные исключения

ignore_exceptions = [
    'Http404',
    'Http401'
    'django.exceptions.http.Http404',
    'django.exceptions.*',
    ValueError,
]

Но в Java я не могу найти похожие теги в sentry.properties, попробуйте сами, может быть, вы его найдете.

##Just give it a try, I didnt test    
ignore.exceptions:
        HTTP 401

ИЛИ вы можете добавить HandlerExceptionResolver в свой класс конфигурации и переопределить метод resolveException и игнорировать исключения вручную.

@Configuration
public class FactoryBeanAppConfig {
    @Bean
    public HandlerExceptionResolver sentryExceptionResolver() {
        return new SentryExceptionResolver() {
            @Override
            public ModelAndView resolveException(HttpServletRequest request,
                    HttpServletResponse response,
                    Object handler,
                    Exception ex) {
                Throwable rootCause = ex;

                while (rootCause .getCause() != null && rootCause.getCause() != rootCause) {
                    rootCause = ex.getCause();
                }

                if (!rootCause.getMessage().contains("HTTP 401")) {
                    super.resolveException(request, response, handler, ex);
                }
                return null;
            }   

        };
    }

    @Bean
    public ServletContextInitializer sentryServletContextInitializer() {
        return new SentryServletContextInitializer();
    }
}
...