diff --git a/CHANGELOG.md b/CHANGELOG.md index a62c2a3af9..82b630a550 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Unreleased +* Feat: Add option to enable debug mode in Log4j2 integration (#1492) + # 5.0.0-beta.5 * Feat: OkHttp callback for Customising the Span (#1478) diff --git a/sentry-log4j2/api/sentry-log4j2.api b/sentry-log4j2/api/sentry-log4j2.api index c003b03e5d..55f10f36ab 100644 --- a/sentry-log4j2/api/sentry-log4j2.api +++ b/sentry-log4j2/api/sentry-log4j2.api @@ -4,9 +4,9 @@ public final class io/sentry/log4j2/BuildConfig { } public final class io/sentry/log4j2/SentryAppender : org/apache/logging/log4j/core/appender/AbstractAppender { - public fun (Ljava/lang/String;Lorg/apache/logging/log4j/core/Filter;Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Level;Lio/sentry/ITransportFactory;Lio/sentry/IHub;)V + public fun (Ljava/lang/String;Lorg/apache/logging/log4j/core/Filter;Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Level;Ljava/lang/Boolean;Lio/sentry/ITransportFactory;Lio/sentry/IHub;)V public fun append (Lorg/apache/logging/log4j/core/LogEvent;)V - public static fun createAppender (Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Level;Ljava/lang/String;Lorg/apache/logging/log4j/core/Filter;)Lio/sentry/log4j2/SentryAppender; + public static fun createAppender (Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Level;Ljava/lang/String;Ljava/lang/Boolean;Lorg/apache/logging/log4j/core/Filter;)Lio/sentry/log4j2/SentryAppender; public fun start ()V } diff --git a/sentry-log4j2/src/main/java/io/sentry/log4j2/SentryAppender.java b/sentry-log4j2/src/main/java/io/sentry/log4j2/SentryAppender.java index d8ed5c76a8..c1b53833e6 100644 --- a/sentry-log4j2/src/main/java/io/sentry/log4j2/SentryAppender.java +++ b/sentry-log4j2/src/main/java/io/sentry/log4j2/SentryAppender.java @@ -38,6 +38,7 @@ public final class SentryAppender extends AbstractAppender { private final @Nullable ITransportFactory transportFactory; private @NotNull Level minimumBreadcrumbLevel = Level.INFO; private @NotNull Level minimumEventLevel = Level.ERROR; + private final @Nullable Boolean debug; private final @NotNull IHub hub; public SentryAppender( @@ -46,6 +47,7 @@ public SentryAppender( final @Nullable String dsn, final @Nullable Level minimumBreadcrumbLevel, final @Nullable Level minimumEventLevel, + final @Nullable Boolean debug, final @Nullable ITransportFactory transportFactory, final @NotNull IHub hub) { super(name, filter, null, true, null); @@ -56,6 +58,7 @@ public SentryAppender( if (minimumEventLevel != null) { this.minimumEventLevel = minimumEventLevel; } + this.debug = debug; this.transportFactory = transportFactory; this.hub = hub; } @@ -67,6 +70,7 @@ public SentryAppender( * @param minimumBreadcrumbLevel The min. level of the breadcrumb. * @param minimumEventLevel The min. level of the event. * @param dsn the Sentry DSN. + * @param debug if Sentry debug mode should be on * @param filter The filter, if any, to use. * @return The SentryAppender. */ @@ -76,6 +80,7 @@ public SentryAppender( @Nullable @PluginAttribute("minimumBreadcrumbLevel") final Level minimumBreadcrumbLevel, @Nullable @PluginAttribute("minimumEventLevel") final Level minimumEventLevel, @Nullable @PluginAttribute("dsn") final String dsn, + @Nullable @PluginAttribute("debug") final Boolean debug, @Nullable @PluginElement("filter") final Filter filter) { if (name == null) { @@ -88,6 +93,7 @@ public SentryAppender( dsn, minimumBreadcrumbLevel, minimumEventLevel, + debug, null, HubAdapter.getInstance()); } @@ -100,6 +106,7 @@ public void start() { options -> { options.setEnableExternalConfiguration(true); options.setDsn(dsn); + options.setDebug(debug); options.setSentryClientName(BuildConfig.SENTRY_LOG4J2_SDK_NAME); options.setSdkVersion(createSdkVersion(options)); Optional.ofNullable(transportFactory).ifPresent(options::setTransportFactory); diff --git a/sentry-log4j2/src/test/kotlin/io/sentry/log4j2/SentryAppenderTest.kt b/sentry-log4j2/src/test/kotlin/io/sentry/log4j2/SentryAppenderTest.kt index 910df2072e..41f6ab8565 100644 --- a/sentry-log4j2/src/test/kotlin/io/sentry/log4j2/SentryAppenderTest.kt +++ b/sentry-log4j2/src/test/kotlin/io/sentry/log4j2/SentryAppenderTest.kt @@ -43,13 +43,13 @@ class SentryAppenderTest { whenever(transportFactory.create(any(), any())).thenReturn(transport) } - fun getSut(transportFactory: ITransportFactory? = null, minimumBreadcrumbLevel: Level? = null, minimumEventLevel: Level? = null): ExtendedLogger { + fun getSut(transportFactory: ITransportFactory? = null, minimumBreadcrumbLevel: Level? = null, minimumEventLevel: Level? = null, debug: Boolean? = null): ExtendedLogger { if (transportFactory != null) { this.transportFactory = transportFactory } loggerContext.start() val config: Configuration = loggerContext.configuration - val appender = SentryAppender("sentry", null, "http://key@localhost/proj", minimumBreadcrumbLevel, minimumEventLevel, this.transportFactory, HubAdapter.getInstance()) + val appender = SentryAppender("sentry", null, "http://key@localhost/proj", minimumBreadcrumbLevel, minimumEventLevel, debug, this.transportFactory, HubAdapter.getInstance()) config.addAppender(appender) val ref = AppenderRef.createAppenderRef("sentry", null, null) @@ -370,4 +370,10 @@ class SentryAppenderTest { }, anyOrNull()) } } + + @Test + fun `sets the debug mode`() { + fixture.getSut(debug = true) + assertTrue(HubAdapter.getInstance().options.isDebug) + } }