diff --git a/src/main/java/uk/ac/ox/ctl/SentryLoggingFilterConfiguration.java b/src/main/java/uk/ac/ox/ctl/SentryLoggingFilterConfiguration.java new file mode 100644 index 0000000..28747c3 --- /dev/null +++ b/src/main/java/uk/ac/ox/ctl/SentryLoggingFilterConfiguration.java @@ -0,0 +1,32 @@ +package uk.ac.ox.ctl; + +import io.sentry.Hint; +import io.sentry.SentryEvent; +import io.sentry.SentryOptions; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver; + +@Configuration +public class SentryLoggingFilterConfiguration { + + private static final String EXCLUDED_LOGGER = + DefaultHandlerExceptionResolver.class.getName(); + + static SentryEvent filterEvent(SentryEvent event) { + if (EXCLUDED_LOGGER.equals(event.getLogger())) { + return null; + } + return event; + } + + @Bean + public SentryOptions.BeforeSendCallback sentryBeforeSendCallback() { + return new SentryOptions.BeforeSendCallback() { + @Override + public SentryEvent execute(SentryEvent event, Hint hint) { + return filterEvent(event); + } + }; + } +} diff --git a/src/test/java/uk/ac/ox/ctl/SentryLoggingFilterConfigurationTest.java b/src/test/java/uk/ac/ox/ctl/SentryLoggingFilterConfigurationTest.java new file mode 100644 index 0000000..b873010 --- /dev/null +++ b/src/test/java/uk/ac/ox/ctl/SentryLoggingFilterConfigurationTest.java @@ -0,0 +1,41 @@ +package uk.ac.ox.ctl; + +import io.sentry.SentryEvent; +import org.junit.jupiter.api.Test; +import org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver; + +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; + +class SentryLoggingFilterConfigurationTest { + + @Test + void filterEvent_shouldReturnNull_whenLoggerIsDefaultHandlerExceptionResolver() { + SentryEvent event = new SentryEvent(); + event.setLogger(DefaultHandlerExceptionResolver.class.getName()); + + SentryEvent result = SentryLoggingFilterConfiguration.filterEvent(event); + + assertNull(result, "Event should be filtered (null) when logger is DefaultHandlerExceptionResolver"); + } + + @Test + void filterEvent_shouldReturnEvent_whenLoggerIsNotExcluded() { + SentryEvent event = new SentryEvent(); + event.setLogger("com.example.SomeOtherLogger"); + + SentryEvent result = SentryLoggingFilterConfiguration.filterEvent(event); + + assertNotNull(result, "Event should not be filtered when logger is not excluded"); + } + + @Test + void filterEvent_shouldReturnEvent_whenLoggerIsNull() { + SentryEvent event = new SentryEvent(); + event.setLogger(null); + + SentryEvent result = SentryLoggingFilterConfiguration.filterEvent(event); + + assertNotNull(result, "Event should not be filtered when logger is null"); + } +}