diff --git a/.cursor/rules/options.mdc b/.cursor/rules/options.mdc index 06d1c02c44e..8da17963179 100644 --- a/.cursor/rules/options.mdc +++ b/.cursor/rules/options.mdc @@ -76,7 +76,7 @@ Allows setting options via `AndroidManifest.xml` `` tags. - Add a `static final String` constant for the key - Read it in `applyMetadata()` using `readBool(metadata, logger, CONSTANT, defaultValue)` - Apply automatic-source options directly, for example - `options.setEnableLogcatLogs(...)` for `io.sentry.logcat.logs.enabled` + `options.setLogcatLogCaptureEnabled(...)` for `io.sentry.logcat.logs.enabled` - Do not add or restore `io.sentry.logs.enabled` or `io.sentry.metrics.enabled`; those aggregate keys are obsolete. @@ -89,8 +89,8 @@ Allows setting options via `AndroidManifest.xml` `` tags. `SentryProperties` extends `SentryOptions`, so bindable namespaced behavior options are available through the `SentryOptions` class hierarchy. Spring-owned integration controls belong to a Spring -namespace instead. For example, `SentryProperties.Logging.enableLogs` binds to -`sentry.logging.enable-logs` and controls Logs forwarding from the auto-configured Logback +namespace instead. For example, `SentryProperties.Logging.logsEnabled` binds to +`sentry.logging.logs-enabled` and controls Logs forwarding from the auto-configured Logback appender. `sentry.logging.enabled` separately controls whether that appender is installed. Do not add or restore `sentry.logs.enabled` or `sentry.metrics.enabled`; those aggregate properties @@ -110,12 +110,12 @@ They capture whenever their scopes are enabled, then apply signal behavior such Automatic integrations must check their source-local opt-in without affecting their existing event or breadcrumb paths. Current Logs controls are: -- Logback: appender `enableLogs` -- Log4j2: appender `enableLogs` -- JUL: handler `enableLogs` -- Spring Boot Logback: `sentry.logging.enable-logs` -- Timber: `enableTimberLogs` / `io.sentry.timber.logs.enabled` -- Logcat: `enableLogcatLogs` / `io.sentry.logcat.logs.enabled` +- Logback: appender `logsEnabled` +- Log4j2: appender `logsEnabled` +- JUL: handler `logsEnabled` +- Spring Boot Logback: `sentry.logging.logs-enabled` +- Timber: `timberLogCaptureEnabled` / `io.sentry.timber.logs.enabled` +- Logcat: `logcatLogCaptureEnabled` / `io.sentry.logcat.logs.enabled` All source-local options default to `false` and gate only Sentry Logs forwarding. diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f834d3f7fe..cbcfa6c97ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,10 +2,34 @@ ## Unreleased +### Breaking Changes + +- Add a `logsEnabled` argument to the preferred Log4j2 `SentryAppender` constructor and + `createAppender` factory. Pass `true` to opt in to Sentry Logs capture or `false` to keep it + disabled. ([#5941](https://github.com/getsentry/sentry-java/pull/5941)) +- Require a `logsEnabled` argument when manually constructing `SentryTimberIntegration` or + `SentryTimberTree`. Replace `SentryTimberIntegration()` with + `SentryTimberIntegration(logsEnabled = false)` in Kotlin or `new SentryTimberIntegration(false)` + in Java to keep Sentry Logs disabled. ([#5943](https://github.com/getsentry/sentry-java/pull/5943)) +- Remove the obsolete aggregate Sentry Metrics options `metrics.enabled` and + `options.getMetrics().setEnabled(...)`. Direct `Sentry.metrics()` calls continue to capture + Metrics whenever the SDK is enabled. ([#5953](https://github.com/getsentry/sentry-java/pull/5953)) +- Remove the obsolete aggregate Sentry Logs options `logs.enabled` and + `options.getLogs().setEnabled(...)`. ([#5947](https://github.com/getsentry/sentry-java/pull/5947)) + Direct `Sentry.logger()` calls continue to capture Logs whenever the SDK is enabled. Sentry Logs + capture is disabled by default for every automatic logging integration. Set the applicable + integration-specific option to `true` to opt in: + - Logback appender: `logsEnabled` + - Log4j2 appender: `logsEnabled` + - JUL handler: `io.sentry.jul.SentryHandler.logsEnabled` + - Spring Boot logging auto-configuration: `sentry.logging.logs-enabled` + - Auto-installed Timber integration: `timberLogCaptureEnabled` or + `io.sentry.timber.logs.enabled` manifest metadata + - Manually installed Timber integration: `logsEnabled` constructor argument + - Logcat: `logcatLogCaptureEnabled` or `io.sentry.logcat.logs.enabled` manifest metadata + ### Features -- Remove the aggregate Sentry Metrics enable flag; `Sentry.metrics()` calls now capture Metrics by default ([#5953](https://github.com/getsentry/sentry-java/pull/5953)) -- Remove the aggregate Sentry Logs enable flag; manual `Sentry.logger()` calls now capture Logs by default ([#5947](https://github.com/getsentry/sentry-java/pull/5947)) - Add an explicit Logs opt-in to Spring Boot logging auto-configuration ([#5946](https://github.com/getsentry/sentry-java/pull/5946)) - Add an explicit Logs opt-in to the Android Logcat integration ([#5945](https://github.com/getsentry/sentry-java/pull/5945)) - Add an explicit Logs opt-in to the Android Timber integration ([#5943](https://github.com/getsentry/sentry-java/pull/5943)) diff --git a/sentry-android-core/api/sentry-android-core.api b/sentry-android-core/api/sentry-android-core.api index 23604c35cd3..4efe56db85b 100644 --- a/sentry-android-core/api/sentry-android-core.api +++ b/sentry-android-core/api/sentry-android-core.api @@ -429,12 +429,14 @@ public final class io/sentry/android/core/SentryAndroidOptions : io/sentry/Sentr public fun getBeforeViewHierarchyCaptureCallback ()Lio/sentry/android/core/SentryAndroidOptions$BeforeCaptureCallback; public fun getDebugImagesLoader ()Lio/sentry/android/core/IDebugImagesLoader; public fun getFrameMetricsCollector ()Lio/sentry/android/core/internal/util/SentryFrameMetricsCollector; + public fun getLogcatLogCaptureEnabled ()Z public fun getMonotonicTicker ()Lio/sentry/time/MonotonicTicker; public fun getNativeSdkName ()Ljava/lang/String; public fun getNdkAppHangTimeoutIntervalMillis ()J public fun getNdkHandlerStrategy ()I public fun getScreenshot ()Lio/sentry/android/core/SentryScreenshotOptions; public fun getStartupCrashDurationThresholdMillis ()J + public fun getTimberLogCaptureEnabled ()Z public fun getTombstoneMergeTimeThresholdMillis ()J public fun isAnrEnabled ()Z public fun isAnrProfilingEnabled ()Z @@ -453,7 +455,6 @@ public final class io/sentry/android/core/SentryAndroidOptions : io/sentry/Sentr public fun isEnableAutoActivityLifecycleTracing ()Z public fun isEnableAutoTraceIdGeneration ()Z public fun isEnableFramesTracking ()Z - public fun isEnableLogcatLogs ()Z public fun isEnableNdk ()Z public fun isEnableNdkAppHangTracking ()Z public fun isEnableNetworkEventBreadcrumbs ()Z @@ -463,7 +464,6 @@ public final class io/sentry/android/core/SentryAndroidOptions : io/sentry/Sentr public fun isEnableStandaloneAppStartTracing ()Z public fun isEnableSystemEventBreadcrumbs ()Z public fun isEnableSystemEventBreadcrumbsExtras ()Z - public fun isEnableTimberLogs ()Z public fun isMemoryLimiterEnabled ()Z public fun isReportHistoricalAnrs ()Z public fun isReportHistoricalMemoryLimiterExits ()Z @@ -490,7 +490,6 @@ public final class io/sentry/android/core/SentryAndroidOptions : io/sentry/Sentr public fun setEnableAutoActivityLifecycleTracing (Z)V public fun setEnableAutoTraceIdGeneration (Z)V public fun setEnableFramesTracking (Z)V - public fun setEnableLogcatLogs (Z)V public fun setEnableNdk (Z)V public fun setEnableNdkAppHangTracking (Z)V public fun setEnableNetworkEventBreadcrumbs (Z)V @@ -500,8 +499,8 @@ public final class io/sentry/android/core/SentryAndroidOptions : io/sentry/Sentr public fun setEnableStandaloneAppStartTracing (Z)V public fun setEnableSystemEventBreadcrumbs (Z)V public fun setEnableSystemEventBreadcrumbsExtras (Z)V - public fun setEnableTimberLogs (Z)V public fun setFrameMetricsCollector (Lio/sentry/android/core/internal/util/SentryFrameMetricsCollector;)V + public fun setLogcatLogCaptureEnabled (Z)V public fun setMemoryLimiterEnabled (Z)V public fun setNativeHandlerStrategy (Lio/sentry/android/core/NdkHandlerStrategy;)V public fun setNativeSdkName (Ljava/lang/String;)V @@ -509,6 +508,7 @@ public final class io/sentry/android/core/SentryAndroidOptions : io/sentry/Sentr public fun setReportHistoricalAnrs (Z)V public fun setReportHistoricalMemoryLimiterExits (Z)V public fun setReportHistoricalTombstones (Z)V + public fun setTimberLogCaptureEnabled (Z)V public fun setTombstoneEnabled (Z)V public fun setTombstoneMergeTimeThresholdMillis (J)V } diff --git a/sentry-android-core/src/main/java/io/sentry/android/core/AndroidOptionsInitializer.java b/sentry-android-core/src/main/java/io/sentry/android/core/AndroidOptionsInitializer.java index c6c29a323fd..a69e6bb397a 100644 --- a/sentry-android-core/src/main/java/io/sentry/android/core/AndroidOptionsInitializer.java +++ b/sentry-android-core/src/main/java/io/sentry/android/core/AndroidOptionsInitializer.java @@ -479,7 +479,8 @@ static void installDefaultIntegrations( } if (isTimberAvailable) { - options.addIntegration(new SentryTimberIntegration(() -> options.isEnableTimberLogs())); + options.addIntegration( + new SentryTimberIntegration(() -> options.getTimberLogCaptureEnabled())); } options.addIntegration(new AppComponentsBreadcrumbsIntegration(context)); options.addIntegration(new SystemEventsBreadcrumbsIntegration(context)); diff --git a/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java b/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java index 217f4937bf1..807546b79d7 100644 --- a/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java +++ b/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java @@ -750,11 +750,11 @@ static void applyMetadata( } } - options.setEnableTimberLogs( - readBool(metadata, logger, ENABLE_TIMBER_LOGS, options.isEnableTimberLogs())); + options.setTimberLogCaptureEnabled( + readBool(metadata, logger, ENABLE_TIMBER_LOGS, options.getTimberLogCaptureEnabled())); - options.setEnableLogcatLogs( - readBool(metadata, logger, ENABLE_LOGCAT_LOGS, options.isEnableLogcatLogs())); + options.setLogcatLogCaptureEnabled( + readBool(metadata, logger, ENABLE_LOGCAT_LOGS, options.getLogcatLogCaptureEnabled())); final @NotNull SentryFeedbackOptions feedbackOptions = options.getFeedbackOptions(); feedbackOptions.setNameRequired( diff --git a/sentry-android-core/src/main/java/io/sentry/android/core/SentryAndroidOptions.java b/sentry-android-core/src/main/java/io/sentry/android/core/SentryAndroidOptions.java index 995499b72b2..b88bb6fdf79 100644 --- a/sentry-android-core/src/main/java/io/sentry/android/core/SentryAndroidOptions.java +++ b/sentry-android-core/src/main/java/io/sentry/android/core/SentryAndroidOptions.java @@ -76,10 +76,10 @@ public final class SentryAndroidOptions extends SentryOptions { private boolean enableNetworkEventBreadcrumbs = true; /** Enable or disable automatic Sentry Logs capture from Timber. Default is disabled. */ - private boolean enableTimberLogs = false; + private boolean timberLogCaptureEnabled = false; /** Enable or disable automatic Sentry Logs capture from Logcat. Default is disabled. */ - private boolean enableLogcatLogs = false; + private boolean logcatLogCaptureEnabled = false; /** * Enables the Auto instrumentation for Activity lifecycle tracing. @@ -511,20 +511,20 @@ public void setEnableNetworkEventBreadcrumbs(boolean enableNetworkEventBreadcrum this.enableNetworkEventBreadcrumbs = enableNetworkEventBreadcrumbs; } - public boolean isEnableTimberLogs() { - return enableTimberLogs; + public boolean getTimberLogCaptureEnabled() { + return timberLogCaptureEnabled; } - public void setEnableTimberLogs(boolean enableTimberLogs) { - this.enableTimberLogs = enableTimberLogs; + public void setTimberLogCaptureEnabled(boolean timberLogCaptureEnabled) { + this.timberLogCaptureEnabled = timberLogCaptureEnabled; } - public boolean isEnableLogcatLogs() { - return enableLogcatLogs; + public boolean getLogcatLogCaptureEnabled() { + return logcatLogCaptureEnabled; } - public void setEnableLogcatLogs(boolean enableLogcatLogs) { - this.enableLogcatLogs = enableLogcatLogs; + public void setLogcatLogCaptureEnabled(boolean logcatLogCaptureEnabled) { + this.logcatLogCaptureEnabled = logcatLogCaptureEnabled; } /** diff --git a/sentry-android-core/src/main/java/io/sentry/android/core/SentryLogcatAdapter.java b/sentry-android-core/src/main/java/io/sentry/android/core/SentryLogcatAdapter.java index 998ce58b3db..64ac3d7d4d1 100644 --- a/sentry-android-core/src/main/java/io/sentry/android/core/SentryLogcatAdapter.java +++ b/sentry-android-core/src/main/java/io/sentry/android/core/SentryLogcatAdapter.java @@ -55,7 +55,7 @@ private static void addAsLog( final @NotNull ScopesAdapter scopes = ScopesAdapter.getInstance(); final @NotNull SentryOptions options = scopes.getOptions(); if (!(options instanceof SentryAndroidOptions) - || !((SentryAndroidOptions) options).isEnableLogcatLogs()) { + || !((SentryAndroidOptions) options).getLogcatLogCaptureEnabled()) { return; } final @Nullable String trMessage = tr != null ? tr.getMessage() : null; diff --git a/sentry-android-core/src/test/java/io/sentry/android/core/AndroidOptionsInitializerTest.kt b/sentry-android-core/src/test/java/io/sentry/android/core/AndroidOptionsInitializerTest.kt index 3c4766917e2..ebd50c2d755 100644 --- a/sentry-android-core/src/test/java/io/sentry/android/core/AndroidOptionsInitializerTest.kt +++ b/sentry-android-core/src/test/java/io/sentry/android/core/AndroidOptionsInitializerTest.kt @@ -709,18 +709,18 @@ class AndroidOptionsInitializerTest { val actual = fixture.sentryOptions.integrations.firstOrNull { it is SentryTimberIntegration } as SentryTimberIntegration - assertFalse(actual.enableLogs) + assertFalse(actual.logsEnabled) } @Test - fun `SentryTimberIntegration receives Timber logs option`() { - fixture.sentryOptions.isEnableTimberLogs = true + fun `SentryTimberIntegration receives Timber log capture option`() { + fixture.sentryOptions.timberLogCaptureEnabled = true fixture.initSutWithClassLoader(isTimberAvailable = true) val actual = fixture.sentryOptions.integrations.firstOrNull { it is SentryTimberIntegration } as SentryTimberIntegration - assertTrue(actual.enableLogs) + assertTrue(actual.logsEnabled) } @Test diff --git a/sentry-android-core/src/test/java/io/sentry/android/core/ManifestMetadataReaderTest.kt b/sentry-android-core/src/test/java/io/sentry/android/core/ManifestMetadataReaderTest.kt index 4e64dc616b5..56847c247b5 100644 --- a/sentry-android-core/src/test/java/io/sentry/android/core/ManifestMetadataReaderTest.kt +++ b/sentry-android-core/src/test/java/io/sentry/android/core/ManifestMetadataReaderTest.kt @@ -2176,52 +2176,52 @@ class ManifestMetadataReaderTest { } @Test - fun `applyMetadata keeps Timber logs disabled if not found`() { + fun `applyMetadata keeps Timber log capture disabled if not found`() { val context = fixture.getContext() ManifestMetadataReader.applyMetadata(context, fixture.options, fixture.buildInfoProvider) - assertFalse(fixture.options.isEnableTimberLogs) + assertFalse(fixture.options.timberLogCaptureEnabled) } @Test - fun `applyMetadata reads Timber logs enabled to options`() { + fun `applyMetadata reads Timber log capture enabled to options`() { val bundle = bundleOf(ManifestMetadataReader.ENABLE_TIMBER_LOGS to true) val context = fixture.getContext(metaData = bundle) ManifestMetadataReader.applyMetadata(context, fixture.options, fixture.buildInfoProvider) - assertTrue(fixture.options.isEnableTimberLogs) + assertTrue(fixture.options.timberLogCaptureEnabled) } @Test - fun `applyMetadata keeps Logcat logs disabled if not found`() { + fun `applyMetadata keeps Logcat log capture disabled if not found`() { val context = fixture.getContext() ManifestMetadataReader.applyMetadata(context, fixture.options, fixture.buildInfoProvider) - assertThat(fixture.options.isEnableLogcatLogs).isFalse() + assertThat(fixture.options.logcatLogCaptureEnabled).isFalse() } @Test - fun `applyMetadata reads Logcat logs enabled to options`() { + fun `applyMetadata reads Logcat log capture enabled to options`() { val bundle = bundleOf(ManifestMetadataReader.ENABLE_LOGCAT_LOGS to true) val context = fixture.getContext(metaData = bundle) ManifestMetadataReader.applyMetadata(context, fixture.options, fixture.buildInfoProvider) - assertThat(fixture.options.isEnableLogcatLogs).isTrue() + assertThat(fixture.options.logcatLogCaptureEnabled).isTrue() } @Test - fun `applyMetadata reads Logcat logs disabled to options`() { - fixture.options.isEnableLogcatLogs = true + fun `applyMetadata reads Logcat log capture disabled to options`() { + fixture.options.logcatLogCaptureEnabled = true val bundle = bundleOf(ManifestMetadataReader.ENABLE_LOGCAT_LOGS to false) val context = fixture.getContext(metaData = bundle) ManifestMetadataReader.applyMetadata(context, fixture.options, fixture.buildInfoProvider) - assertThat(fixture.options.isEnableLogcatLogs).isFalse() + assertThat(fixture.options.logcatLogCaptureEnabled).isFalse() } @Test diff --git a/sentry-android-core/src/test/java/io/sentry/android/core/SentryAndroidOptionsTest.kt b/sentry-android-core/src/test/java/io/sentry/android/core/SentryAndroidOptionsTest.kt index f60e0dcb035..cc8b9100015 100644 --- a/sentry-android-core/src/test/java/io/sentry/android/core/SentryAndroidOptionsTest.kt +++ b/sentry-android-core/src/test/java/io/sentry/android/core/SentryAndroidOptionsTest.kt @@ -95,31 +95,31 @@ class SentryAndroidOptionsTest { } @Test - fun `Timber logs are disabled by default`() { + fun `Timber log capture is disabled by default`() { val sentryOptions = SentryAndroidOptions() - assertFalse(sentryOptions.isEnableTimberLogs) + assertFalse(sentryOptions.timberLogCaptureEnabled) } @Test - fun `Timber logs can be enabled`() { + fun `Timber log capture can be enabled`() { val sentryOptions = SentryAndroidOptions() - sentryOptions.isEnableTimberLogs = true + sentryOptions.timberLogCaptureEnabled = true - assertTrue(sentryOptions.isEnableTimberLogs) + assertTrue(sentryOptions.timberLogCaptureEnabled) } @Test - fun `Logcat logs are disabled by default`() { - assertThat(SentryAndroidOptions().isEnableLogcatLogs).isFalse() + fun `Logcat log capture is disabled by default`() { + assertThat(SentryAndroidOptions().logcatLogCaptureEnabled).isFalse() } @Test - fun `Logcat logs can be enabled`() { + fun `Logcat log capture can be enabled`() { val sentryOptions = SentryAndroidOptions() - sentryOptions.isEnableLogcatLogs = true + sentryOptions.logcatLogCaptureEnabled = true - assertThat(sentryOptions.isEnableLogcatLogs).isTrue() + assertThat(sentryOptions.logcatLogCaptureEnabled).isTrue() } @Test diff --git a/sentry-android-core/src/test/java/io/sentry/android/core/SentryAndroidTest.kt b/sentry-android-core/src/test/java/io/sentry/android/core/SentryAndroidTest.kt index d12adc5f0fa..70e5cf5c6ca 100644 --- a/sentry-android-core/src/test/java/io/sentry/android/core/SentryAndroidTest.kt +++ b/sentry-android-core/src/test/java/io/sentry/android/core/SentryAndroidTest.kt @@ -241,10 +241,10 @@ class SentryAndroidTest { } @Test - fun `auto-installed Timber integration uses Logs option set in configuration callback`() { + fun `auto-installed Timber integration uses log capture option set in configuration callback`() { val logs = mutableListOf() fixture.initSut { options -> - options.isEnableTimberLogs = true + options.timberLogCaptureEnabled = true options.logs.beforeSend = SentryOptions.Logs.BeforeSendLogCallback { log -> logs.add(log) @@ -268,7 +268,7 @@ class SentryAndroidTest { val logs = mutableListOf() initForTest(mockContext) { options -> - options.isEnableTimberLogs = false + options.timberLogCaptureEnabled = false options.logs.beforeSend = SentryOptions.Logs.BeforeSendLogCallback { log -> logs.add(log) @@ -286,7 +286,13 @@ class SentryAndroidTest { fixture.initSut(autoInit = true) { it.addIntegration(FragmentLifecycleIntegration(ApplicationProvider.getApplicationContext())) - it.addIntegration(SentryTimberIntegration(minEventLevel = FATAL, minBreadcrumbLevel = DEBUG)) + it.addIntegration( + SentryTimberIntegration( + minEventLevel = FATAL, + minBreadcrumbLevel = DEBUG, + logsEnabled = false, + ) + ) it.addIntegration( SystemEventsBreadcrumbsIntegration( diff --git a/sentry-android-core/src/test/java/io/sentry/android/core/SentryLogcatAdapterTest.kt b/sentry-android-core/src/test/java/io/sentry/android/core/SentryLogcatAdapterTest.kt index 582f475f68d..135c2da6613 100644 --- a/sentry-android-core/src/test/java/io/sentry/android/core/SentryLogcatAdapterTest.kt +++ b/sentry-android-core/src/test/java/io/sentry/android/core/SentryLogcatAdapterTest.kt @@ -28,7 +28,7 @@ class SentryLogcatAdapterTest { val logs = mutableListOf() fun initSut( - enableLogcatLogs: Boolean? = true, + logcatLogCaptureEnabled: Boolean? = true, metadata: Bundle = Bundle(), options: Sentry.OptionsConfiguration? = null, ) { @@ -39,8 +39,8 @@ class SentryLogcatAdapterTest { breadcrumbs.add(breadcrumb) breadcrumb } - if (enableLogcatLogs != null) { - it.isEnableLogcatLogs = enableLogcatLogs + if (logcatLogCaptureEnabled != null) { + it.logcatLogCaptureEnabled = logcatLogCaptureEnabled } it.logs.beforeSend = SentryOptions.Logs.BeforeSendLogCallback { logEvent -> @@ -65,8 +65,8 @@ class SentryLogcatAdapterTest { } @Test - fun `Logcat logs are disabled by default while breadcrumbs and Android Log remain enabled`() { - fixture.initSut(enableLogcatLogs = null) + fun `Logcat log capture is disabled by default while breadcrumbs and Android Log remain enabled`() { + fixture.initSut(logcatLogCaptureEnabled = null) SentryLogcatAdapter.d(tag, commonMsg) @@ -76,8 +76,8 @@ class SentryLogcatAdapterTest { } @Test - fun `Logcat logs can be enabled through Android options`() { - fixture.initSut(enableLogcatLogs = true) + fun `Logcat log capture can be enabled through Android options`() { + fixture.initSut(logcatLogCaptureEnabled = true) SentryLogcatAdapter.d(tag, commonMsg) @@ -85,9 +85,9 @@ class SentryLogcatAdapterTest { } @Test - fun `Logcat logs can be enabled through manifest metadata`() { + fun `Logcat log capture can be enabled through manifest metadata`() { val metadata = Bundle().apply { putBoolean(ManifestMetadataReader.ENABLE_LOGCAT_LOGS, true) } - fixture.initSut(enableLogcatLogs = null, metadata = metadata) + fixture.initSut(logcatLogCaptureEnabled = null, metadata = metadata) SentryLogcatAdapter.d(tag, commonMsg) diff --git a/sentry-android-timber/api/sentry-android-timber.api b/sentry-android-timber/api/sentry-android-timber.api index ad5c909836e..f130e820f7f 100644 --- a/sentry-android-timber/api/sentry-android-timber.api +++ b/sentry-android-timber/api/sentry-android-timber.api @@ -8,13 +8,11 @@ public final class io/sentry/android/timber/BuildConfig { } public final class io/sentry/android/timber/SentryTimberIntegration : io/sentry/Integration, java/io/Closeable { - public fun ()V - public fun (Lio/sentry/SentryLevel;Lio/sentry/SentryLevel;Lio/sentry/SentryLogLevel;)V - public synthetic fun (Lio/sentry/SentryLevel;Lio/sentry/SentryLevel;Lio/sentry/SentryLogLevel;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public fun (Lio/sentry/SentryLevel;Lio/sentry/SentryLevel;Lio/sentry/SentryLogLevel;Z)V + public synthetic fun (Lio/sentry/SentryLevel;Lio/sentry/SentryLevel;Lio/sentry/SentryLogLevel;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V public fun (Z)V public fun close ()V - public final fun getEnableLogs ()Z + public final fun getLogsEnabled ()Z public final fun getMinBreadcrumbLevel ()Lio/sentry/SentryLevel; public final fun getMinEventLevel ()Lio/sentry/SentryLevel; public final fun getMinLogsLevel ()Lio/sentry/SentryLogLevel; @@ -22,9 +20,8 @@ public final class io/sentry/android/timber/SentryTimberIntegration : io/sentry/ } public final class io/sentry/android/timber/SentryTimberTree : timber/log/Timber$Tree { - public fun (Lio/sentry/IScopes;Lio/sentry/SentryLevel;Lio/sentry/SentryLevel;Lio/sentry/SentryLogLevel;)V - public synthetic fun (Lio/sentry/IScopes;Lio/sentry/SentryLevel;Lio/sentry/SentryLevel;Lio/sentry/SentryLogLevel;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public fun (Lio/sentry/IScopes;Lio/sentry/SentryLevel;Lio/sentry/SentryLevel;Lio/sentry/SentryLogLevel;Z)V + public synthetic fun (Lio/sentry/IScopes;Lio/sentry/SentryLevel;Lio/sentry/SentryLevel;Lio/sentry/SentryLogLevel;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V public fun d (Ljava/lang/String;[Ljava/lang/Object;)V public fun d (Ljava/lang/Throwable;)V public fun d (Ljava/lang/Throwable;Ljava/lang/String;[Ljava/lang/Object;)V diff --git a/sentry-android-timber/src/main/java/io/sentry/android/timber/SentryTimberIntegration.kt b/sentry-android-timber/src/main/java/io/sentry/android/timber/SentryTimberIntegration.kt index dabf3531fd1..f9ef0c308ef 100644 --- a/sentry-android-timber/src/main/java/io/sentry/android/timber/SentryTimberIntegration.kt +++ b/sentry-android-timber/src/main/java/io/sentry/android/timber/SentryTimberIntegration.kt @@ -14,32 +14,45 @@ import java.io.Closeable import timber.log.Timber /** Sentry integration for Timber. */ -public class SentryTimberIntegration( - public val minEventLevel: SentryLevel = SentryLevel.ERROR, - public val minBreadcrumbLevel: SentryLevel = SentryLevel.INFO, - public val minLogsLevel: SentryLogLevel = SentryLogLevel.INFO, +public class SentryTimberIntegration +private constructor( + public val minEventLevel: SentryLevel, + public val minBreadcrumbLevel: SentryLevel, + public val minLogsLevel: SentryLogLevel, + private val logsEnabledProvider: Evaluator, ) : Integration, Closeable { - public val enableLogs: Boolean - get() = enableLogsProvider.evaluate() - - private var enableLogsProvider: Evaluator = Evaluator { false } - - public constructor(enableLogs: Boolean) : this() { - enableLogsProvider = Evaluator { enableLogs } - } + public constructor( + minEventLevel: SentryLevel = SentryLevel.ERROR, + minBreadcrumbLevel: SentryLevel = SentryLevel.INFO, + minLogsLevel: SentryLogLevel = SentryLogLevel.INFO, + logsEnabled: Boolean, + ) : this( + minEventLevel, + minBreadcrumbLevel, + minLogsLevel, + Evaluator { logsEnabled }, + ) public constructor( - minEventLevel: SentryLevel, - minBreadcrumbLevel: SentryLevel, - minLogsLevel: SentryLogLevel, - enableLogs: Boolean, - ) : this(minEventLevel, minBreadcrumbLevel, minLogsLevel) { - enableLogsProvider = Evaluator { enableLogs } - } + logsEnabled: Boolean + ) : this( + SentryLevel.ERROR, + SentryLevel.INFO, + SentryLogLevel.INFO, + logsEnabled, + ) - internal constructor(enableLogsProvider: Evaluator) : this() { - this.enableLogsProvider = enableLogsProvider - } + internal constructor( + logsEnabledProvider: Evaluator + ) : this( + SentryLevel.ERROR, + SentryLevel.INFO, + SentryLogLevel.INFO, + logsEnabledProvider, + ) + + public val logsEnabled: Boolean + get() = logsEnabledProvider.evaluate() private lateinit var tree: SentryTimberTree private lateinit var logger: ILogger @@ -60,7 +73,7 @@ public class SentryTimberIntegration( minEventLevel, minBreadcrumbLevel, minLogsLevel, - enableLogsProvider.evaluate(), + logsEnabledProvider.evaluate(), ) Timber.plant(tree) diff --git a/sentry-android-timber/src/main/java/io/sentry/android/timber/SentryTimberTree.kt b/sentry-android-timber/src/main/java/io/sentry/android/timber/SentryTimberTree.kt index f63dd7b66d0..0dd5df1d70c 100644 --- a/sentry-android-timber/src/main/java/io/sentry/android/timber/SentryTimberTree.kt +++ b/sentry-android-timber/src/main/java/io/sentry/android/timber/SentryTimberTree.kt @@ -19,19 +19,8 @@ public class SentryTimberTree( private val minEventLevel: SentryLevel, private val minBreadcrumbLevel: SentryLevel, private val minLogLevel: SentryLogLevel = SentryLogLevel.INFO, + private val logsEnabled: Boolean = false, ) : Timber.Tree() { - private var enableLogs: Boolean = false - - public constructor( - scopes: IScopes, - minEventLevel: SentryLevel, - minBreadcrumbLevel: SentryLevel, - minLogLevel: SentryLogLevel, - enableLogs: Boolean, - ) : this(scopes, minEventLevel, minBreadcrumbLevel, minLogLevel) { - this.enableLogs = enableLogs - } - private val pendingTag = ThreadLocal() private fun retrieveTag(): String? { @@ -197,7 +186,7 @@ public class SentryTimberTree( captureEvent(level, tag, sentryMessage, throwable) addBreadcrumb(level, sentryMessage, throwable) - if (enableLogs) { + if (logsEnabled) { addLog(logLevel, message, tag, throwable, *args) } } diff --git a/sentry-android-timber/src/test/java/io/sentry/android/timber/SentryTimberIntegrationTest.kt b/sentry-android-timber/src/test/java/io/sentry/android/timber/SentryTimberIntegrationTest.kt index 6597d528f87..e569b7a2936 100644 --- a/sentry-android-timber/src/test/java/io/sentry/android/timber/SentryTimberIntegrationTest.kt +++ b/sentry-android-timber/src/test/java/io/sentry/android/timber/SentryTimberIntegrationTest.kt @@ -39,22 +39,14 @@ class SentryTimberIntegrationTest { minEventLevel: SentryLevel = SentryLevel.ERROR, minBreadcrumbLevel: SentryLevel = SentryLevel.INFO, minLogsLevel: SentryLogLevel = SentryLogLevel.INFO, - enableLogs: Boolean? = null, + logsEnabled: Boolean = false, ): SentryTimberIntegration = - if (enableLogs == null) { - SentryTimberIntegration( - minEventLevel = minEventLevel, - minBreadcrumbLevel = minBreadcrumbLevel, - minLogsLevel = minLogsLevel, - ) - } else { - SentryTimberIntegration( - minEventLevel = minEventLevel, - minBreadcrumbLevel = minBreadcrumbLevel, - minLogsLevel = minLogsLevel, - enableLogs = enableLogs, - ) - } + SentryTimberIntegration( + minEventLevel = minEventLevel, + minBreadcrumbLevel = minBreadcrumbLevel, + minLogsLevel = minLogsLevel, + logsEnabled = logsEnabled, + ) } private val fixture = Fixture() @@ -86,11 +78,11 @@ class SentryTimberIntegrationTest { } @Test - fun `Manual integration defaults logs to disabled while capturing events and breadcrumbs`() { - val sut = fixture.getSut() + fun `Manual integration keeps logs disabled when configured false`() { + val sut = SentryTimberIntegration(logsEnabled = false) sut.register(fixture.scopes, fixture.options) - assertFalse(sut.enableLogs) + assertFalse(sut.logsEnabled) Timber.e("message") verify(fixture.scopes).captureEvent(any()) @@ -100,10 +92,10 @@ class SentryTimberIntegrationTest { @Test fun `Manual integration captures logs when enabled`() { - val sut = fixture.getSut(enableLogs = true) + val sut = SentryTimberIntegration(logsEnabled = true) sut.register(fixture.scopes, fixture.options) - assertTrue(sut.enableLogs) + assertTrue(sut.logsEnabled) Timber.i("message") verify(fixture.logs).log(any(), any(), any()) @@ -111,9 +103,9 @@ class SentryTimberIntegrationTest { @Test fun `Integration evaluates Logs provider when registered`() { - var enableLogs = false - val sut = SentryTimberIntegration(Evaluator { enableLogs }) - enableLogs = true + var logsEnabled = false + val sut = SentryTimberIntegration(Evaluator { logsEnabled }) + logsEnabled = true sut.register(fixture.scopes, fixture.options) Timber.i("message") diff --git a/sentry-android-timber/src/test/java/io/sentry/android/timber/SentryTimberTreeTest.kt b/sentry-android-timber/src/test/java/io/sentry/android/timber/SentryTimberTreeTest.kt index 457ab31d33c..6206bb783ba 100644 --- a/sentry-android-timber/src/test/java/io/sentry/android/timber/SentryTimberTreeTest.kt +++ b/sentry-android-timber/src/test/java/io/sentry/android/timber/SentryTimberTreeTest.kt @@ -31,15 +31,15 @@ class SentryTimberTreeTest { minEventLevel: SentryLevel = SentryLevel.ERROR, minBreadcrumbLevel: SentryLevel = SentryLevel.INFO, minLogsLevel: SentryLogLevel = SentryLogLevel.INFO, - enableLogs: Boolean? = true, + logsEnabled: Boolean? = true, ): SentryTimberTree { logs = mock() scopes = mock() whenever(scopes.logger()).thenReturn(logs) - return if (enableLogs == null) { + return if (logsEnabled == null) { SentryTimberTree(scopes, minEventLevel, minBreadcrumbLevel, minLogsLevel) } else { - SentryTimberTree(scopes, minEventLevel, minBreadcrumbLevel, minLogsLevel, enableLogs) + SentryTimberTree(scopes, minEventLevel, minBreadcrumbLevel, minLogsLevel, logsEnabled) } } } @@ -303,7 +303,7 @@ class SentryTimberTreeTest { @Test fun `Tree defaults logs to disabled while capturing events and breadcrumbs`() { - val sut = fixture.getSut(enableLogs = null) + val sut = fixture.getSut(logsEnabled = null) sut.e("message") diff --git a/sentry-jul/api/sentry-jul.api b/sentry-jul/api/sentry-jul.api index 1fdf4895971..e23503666eb 100644 --- a/sentry-jul/api/sentry-jul.api +++ b/sentry-jul/api/sentry-jul.api @@ -12,13 +12,13 @@ public class io/sentry/jul/SentryHandler : java/util/logging/Handler { protected fun captureLog (Ljava/util/logging/LogRecord;)V public fun close ()V public fun flush ()V + public fun getLogsEnabled ()Z public fun getMinimumBreadcrumbLevel ()Ljava/util/logging/Level; public fun getMinimumEventLevel ()Ljava/util/logging/Level; public fun getMinimumLevel ()Ljava/util/logging/Level; - public fun isEnableLogs ()Z public fun isPrintfStyle ()Z public fun publish (Ljava/util/logging/LogRecord;)V - public fun setEnableLogs (Z)V + public fun setLogsEnabled (Z)V public fun setMinimumBreadcrumbLevel (Ljava/util/logging/Level;)V public fun setMinimumEventLevel (Ljava/util/logging/Level;)V public fun setMinimumLevel (Ljava/util/logging/Level;)V diff --git a/sentry-jul/src/main/java/io/sentry/jul/SentryHandler.java b/sentry-jul/src/main/java/io/sentry/jul/SentryHandler.java index 685402e27bd..5b1a417f9ae 100644 --- a/sentry-jul/src/main/java/io/sentry/jul/SentryHandler.java +++ b/sentry-jul/src/main/java/io/sentry/jul/SentryHandler.java @@ -54,7 +54,7 @@ public class SentryHandler extends Handler { */ private boolean printfStyle; - private boolean enableLogs; + private boolean logsEnabled; private @NotNull Level minimumBreadcrumbLevel = Level.INFO; private @NotNull Level minimumEventLevel = Level.SEVERE; @@ -115,7 +115,7 @@ public void publish(final @NotNull LogRecord record) { return; } try { - if (enableLogs && record.getLevel().intValue() >= minimumLevel.intValue()) { + if (logsEnabled && record.getLevel().intValue() >= minimumLevel.intValue()) { captureLog(record); } if (record.getLevel().intValue() >= minimumEventLevel.intValue()) { @@ -198,7 +198,7 @@ private void retrieveProperties() { final LogManager manager = LogManager.getLogManager(); final String className = SentryHandler.class.getName(); setPrintfStyle(Boolean.parseBoolean(manager.getProperty(className + ".printfStyle"))); - setEnableLogs(Boolean.parseBoolean(manager.getProperty(className + ".enableLogs"))); + setLogsEnabled(Boolean.parseBoolean(manager.getProperty(className + ".logsEnabled"))); setLevel(parseLevelOrDefault(manager.getProperty(className + ".level"))); final String minimumBreadCrumbLevel = manager.getProperty(className + ".minimumBreadcrumbLevel"); @@ -401,12 +401,12 @@ public void setPrintfStyle(final boolean printfStyle) { this.printfStyle = printfStyle; } - public void setEnableLogs(final boolean enableLogs) { - this.enableLogs = enableLogs; + public void setLogsEnabled(final boolean logsEnabled) { + this.logsEnabled = logsEnabled; } - public boolean isEnableLogs() { - return enableLogs; + public boolean getLogsEnabled() { + return logsEnabled; } public void setMinimumBreadcrumbLevel(final @Nullable Level minimumBreadcrumbLevel) { diff --git a/sentry-jul/src/test/kotlin/io/sentry/jul/SentryHandlerTest.kt b/sentry-jul/src/test/kotlin/io/sentry/jul/SentryHandlerTest.kt index 028c6759727..9ab96f451e9 100644 --- a/sentry-jul/src/test/kotlin/io/sentry/jul/SentryHandlerTest.kt +++ b/sentry-jul/src/test/kotlin/io/sentry/jul/SentryHandlerTest.kt @@ -43,7 +43,7 @@ class SentryHandlerTest { val transport: ITransport = mock(), contextTags: List? = null, printfStyle: Boolean? = null, - enableLogs: Boolean? = true, + logsEnabled: Boolean? = true, ) { var logger: Logger var handler: SentryHandler @@ -62,8 +62,8 @@ class SentryHandlerTest { handler.setMinimumBreadcrumbLevel(minimumBreadcrumbLevel) handler.setMinimumEventLevel(minimumEventLevel) handler.setMinimumLevel(minimumLevel) - if (enableLogs != null) { - handler.setEnableLogs(enableLogs) + if (logsEnabled != null) { + handler.setLogsEnabled(logsEnabled) } if (printfStyle == true) { handler.setPrintfStyle(printfStyle) @@ -325,12 +325,12 @@ class SentryHandlerTest { @Test fun `fetches configuration from logging dot properties`() { - fixture = Fixture(configureWithLogManager = true, enableLogs = null) + fixture = Fixture(configureWithLogManager = true, logsEnabled = null) assertEquals(Level.CONFIG, fixture.handler.minimumBreadcrumbLevel) assertEquals(Level.WARNING, fixture.handler.minimumEventLevel) assertEquals(Level.ALL, fixture.handler.level) assertTrue(fixture.handler.isPrintfStyle) - assertTrue(fixture.handler.isEnableLogs) + assertTrue(fixture.handler.logsEnabled) fixture.logger.info("this should be captured as a log") Sentry.flush(10) @@ -438,9 +438,9 @@ class SentryHandlerTest { @Test fun `does not capture logs by default`() { - fixture = Fixture(enableLogs = null) + fixture = Fixture(logsEnabled = null) - assertFalse(fixture.handler.isEnableLogs) + assertFalse(fixture.handler.logsEnabled) fixture.logger.info("this should not be captured as a log") Sentry.flush(10) @@ -449,9 +449,9 @@ class SentryHandlerTest { @Test fun `captures logs when enabled through Java`() { - fixture = Fixture(enableLogs = true) + fixture = Fixture(logsEnabled = true) - assertTrue(fixture.handler.isEnableLogs) + assertTrue(fixture.handler.logsEnabled) fixture.logger.info("this should be captured as a log") Sentry.flush(10) @@ -469,7 +469,7 @@ class SentryHandlerTest { Fixture( minimumBreadcrumbLevel = Level.INFO, minimumEventLevel = Level.SEVERE, - enableLogs = false, + logsEnabled = false, ) fixture.logger.info("this should be a breadcrumb") @@ -493,7 +493,7 @@ class SentryHandlerTest { Fixture( minimumBreadcrumbLevel = Level.INFO, minimumEventLevel = Level.SEVERE, - enableLogs = true, + logsEnabled = true, ) fixture.logger.info(null as String?) @@ -518,7 +518,7 @@ class SentryHandlerTest { Fixture( minimumBreadcrumbLevel = Level.INFO, minimumEventLevel = Level.SEVERE, - enableLogs = true, + logsEnabled = true, ) val resourceBundle = object : ListResourceBundle() { diff --git a/sentry-jul/src/test/resources/logging.properties b/sentry-jul/src/test/resources/logging.properties index 25ac65e1f66..66d5b40360f 100644 --- a/sentry-jul/src/test/resources/logging.properties +++ b/sentry-jul/src/test/resources/logging.properties @@ -3,6 +3,6 @@ io.sentry.jul.SentryHandler.minimumEventLevel=WARNING io.sentry.jul.SentryHandler.minimumBreadcrumbLevel=CONFIG io.sentry.jul.SentryHandler.minimumLevel=CONFIG io.sentry.jul.SentryHandler.printfStyle=true -io.sentry.jul.SentryHandler.enableLogs=true +io.sentry.jul.SentryHandler.logsEnabled=true jul.SentryHandlerTest.handlers=java.util.logging.ConsoleHandler, io.sentry.jul.SentryHandler diff --git a/sentry-log4j2/api/sentry-log4j2.api b/sentry-log4j2/api/sentry-log4j2.api index 2afe9f1855c..0c9bff9a0af 100644 --- a/sentry-log4j2/api/sentry-log4j2.api +++ b/sentry-log4j2/api/sentry-log4j2.api @@ -6,12 +6,10 @@ public final class io/sentry/log4j2/BuildConfig { public class io/sentry/log4j2/SentryAppender : org/apache/logging/log4j/core/appender/AbstractAppender { public static final field MECHANISM_TYPE Ljava/lang/String; 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/IScopes;[Ljava/lang/String;)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;Lorg/apache/logging/log4j/Level;Ljava/lang/Boolean;Lio/sentry/ITransportFactory;Lio/sentry/IScopes;[Ljava/lang/String;)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;Lorg/apache/logging/log4j/Level;ZLjava/lang/Boolean;Lio/sentry/ITransportFactory;Lio/sentry/IScopes;[Ljava/lang/String;)V public fun append (Lorg/apache/logging/log4j/core/LogEvent;)V protected fun captureLog (Lorg/apache/logging/log4j/core/LogEvent;)V public static fun createAppender (Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Level;Ljava/lang/Boolean;Ljava/lang/String;Ljava/lang/Boolean;Lorg/apache/logging/log4j/core/Filter;Ljava/lang/String;)Lio/sentry/log4j2/SentryAppender; - public static fun createAppender (Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Level;Ljava/lang/String;Ljava/lang/Boolean;Lorg/apache/logging/log4j/core/Filter;Ljava/lang/String;)Lio/sentry/log4j2/SentryAppender; protected fun createBreadcrumb (Lorg/apache/logging/log4j/core/LogEvent;)Lio/sentry/Breadcrumb; protected fun createEvent (Lorg/apache/logging/log4j/core/LogEvent;)Lio/sentry/SentryEvent; public fun getMinimumBreadcrumbLevel ()Lorg/apache/logging/log4j/Level; 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 ab1d59a7925..1357d3aab5a 100644 --- a/sentry-log4j2/src/main/java/io/sentry/log4j2/SentryAppender.java +++ b/sentry-log4j2/src/main/java/io/sentry/log4j2/SentryAppender.java @@ -55,7 +55,7 @@ public class SentryAppender extends AbstractAppender { private @NotNull Level minimumBreadcrumbLevel = Level.INFO; private @NotNull Level minimumEventLevel = Level.ERROR; private @NotNull Level minimumLevel = Level.INFO; - private final boolean enableLogs; + private final boolean logsEnabled; private final @Nullable Boolean debug; private final @NotNull IScopes scopes; private final @Nullable List contextTags; @@ -67,7 +67,8 @@ public class SentryAppender extends AbstractAppender { /** * @deprecated This constructor is deprecated. Please use {@link #SentryAppender(String, Filter, - * String, Level, Level, Level, Boolean, ITransportFactory, IScopes, String[])} instead. + * String, Level, Level, Level, boolean, Boolean, ITransportFactory, IScopes, String[])} + * instead. */ @Deprecated @SuppressWarnings("InlineMeSuggester") @@ -88,30 +89,6 @@ public SentryAppender( minimumBreadcrumbLevel, minimumEventLevel, null, - debug, - transportFactory, - scopes, - contextTags); - } - - public SentryAppender( - final @NotNull String name, - final @Nullable Filter filter, - final @Nullable String dsn, - final @Nullable Level minimumBreadcrumbLevel, - final @Nullable Level minimumEventLevel, - final @Nullable Level minimumLevel, - final @Nullable Boolean debug, - final @Nullable ITransportFactory transportFactory, - final @NotNull IScopes scopes, - final @Nullable String[] contextTags) { - this( - name, - filter, - dsn, - minimumBreadcrumbLevel, - minimumEventLevel, - minimumLevel, false, debug, transportFactory, @@ -126,7 +103,7 @@ public SentryAppender( final @Nullable Level minimumBreadcrumbLevel, final @Nullable Level minimumEventLevel, final @Nullable Level minimumLevel, - final boolean enableLogs, + final boolean logsEnabled, final @Nullable Boolean debug, final @Nullable ITransportFactory transportFactory, final @NotNull IScopes scopes, @@ -142,7 +119,7 @@ public SentryAppender( if (minimumLevel != null) { this.minimumLevel = minimumLevel; } - this.enableLogs = enableLogs; + this.logsEnabled = logsEnabled; this.debug = debug; this.transportFactory = transportFactory; this.scopes = scopes; @@ -156,39 +133,19 @@ public SentryAppender( * @param minimumBreadcrumbLevel The min. level of the breadcrumb. * @param minimumEventLevel The min. level of the event. * @param minimumLevel The min. level of the log event. + * @param logsEnabled Whether to capture log events as Sentry Logs. * @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. */ - public static @Nullable SentryAppender createAppender( - final @Nullable String name, - final @Nullable Level minimumBreadcrumbLevel, - final @Nullable Level minimumEventLevel, - final @Nullable Level minimumLevel, - final @Nullable String dsn, - final @Nullable Boolean debug, - final @Nullable Filter filter, - final @Nullable String contextTags) { - return createAppender( - name, - minimumBreadcrumbLevel, - minimumEventLevel, - minimumLevel, - false, - dsn, - debug, - filter, - contextTags); - } - @PluginFactory public static @Nullable SentryAppender createAppender( @Nullable @PluginAttribute("name") final String name, @Nullable @PluginAttribute("minimumBreadcrumbLevel") final Level minimumBreadcrumbLevel, @Nullable @PluginAttribute("minimumEventLevel") final Level minimumEventLevel, @Nullable @PluginAttribute("minimumLevel") final Level minimumLevel, - @Nullable @PluginAttribute("enableLogs") final Boolean enableLogs, + @Nullable @PluginAttribute("logsEnabled") final Boolean logsEnabled, @Nullable @PluginAttribute("dsn") final String dsn, @Nullable @PluginAttribute("debug") final Boolean debug, @Nullable @PluginElement("filter") final Filter filter, @@ -205,7 +162,7 @@ public SentryAppender( minimumBreadcrumbLevel, minimumEventLevel, minimumLevel, - Boolean.TRUE.equals(enableLogs), + Boolean.TRUE.equals(logsEnabled), debug, null, ScopesAdapter.getInstance(), @@ -269,7 +226,7 @@ void start(final @NotNull Sentry.OptionsConfiguration optionsConf @Override public void append(final @NotNull LogEvent eventObject) { - if (enableLogs && eventObject.getLevel().isMoreSpecificThan(minimumLevel)) { + if (logsEnabled && eventObject.getLevel().isMoreSpecificThan(minimumLevel)) { captureLog(eventObject); } if (eventObject.getLevel().isMoreSpecificThan(minimumEventLevel)) { 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 fe5d3f4112c..2f95ed99a4e 100644 --- a/sentry-log4j2/src/test/kotlin/io/sentry/log4j2/SentryAppenderTest.kt +++ b/sentry-log4j2/src/test/kotlin/io/sentry/log4j2/SentryAppenderTest.kt @@ -62,7 +62,7 @@ class SentryAppenderTest { minimumLevel: Level? = null, debug: Boolean? = null, contextTags: List? = null, - enableLogs: Boolean = true, + logsEnabled: Boolean = true, ): ExtendedLogger { if (transportFactory != null) { this.transportFactory = transportFactory @@ -77,7 +77,7 @@ class SentryAppenderTest { minimumBreadcrumbLevel, minimumEventLevel, minimumLevel, - enableLogs, + logsEnabled, debug, this.transportFactory, ScopesAdapter.getInstance(), @@ -262,7 +262,7 @@ class SentryAppenderTest { @Test fun `does not capture logs when local logs are disabled`() { - val logger = fixture.getSut(enableLogs = false) + val logger = fixture.getSut(logsEnabled = false) logger.info("this should not be captured as a log") Sentry.flush(10) @@ -272,7 +272,7 @@ class SentryAppenderTest { @Test fun `captures logs when local logs are enabled`() { - val logger = fixture.getSut(enableLogs = true) + val logger = fixture.getSut(logsEnabled = true) logger.info("this should be captured as a log") Sentry.flush(10) @@ -291,7 +291,7 @@ class SentryAppenderTest { fixture.getSut( minimumBreadcrumbLevel = Level.INFO, minimumEventLevel = Level.ERROR, - enableLogs = false, + logsEnabled = false, ) logger.info("this should be a breadcrumb") @@ -310,7 +310,7 @@ class SentryAppenderTest { } @Test - fun `existing constructors default logs to disabled`() { + fun `constructors can opt out of logs capture`() { val scopes = mock() val event = mock() whenever(event.level).thenReturn(Level.INFO) @@ -335,6 +335,7 @@ class SentryAppenderTest { Level.OFF, Level.OFF, Level.INFO, + false, null, null, scopes, @@ -348,24 +349,9 @@ class SentryAppenderTest { } @Test - fun `existing factory and plugin attribute default logs to disabled`() { + fun `plugin attribute defaults logs to disabled`() { val event = mock() whenever(event.level).thenReturn(Level.INFO) - val existingAppender = - spy( - assertNotNull( - SentryAppender.createAppender( - "existing", - Level.OFF, - Level.OFF, - Level.INFO, - null, - null, - null, - null, - ) - ) - ) val pluginDefaultAppender = spy( assertNotNull( @@ -383,10 +369,8 @@ class SentryAppenderTest { ) ) - existingAppender.append(event) pluginDefaultAppender.append(event) - verify(existingAppender, never()).captureLog(event) verify(pluginDefaultAppender, never()).captureLog(event) } diff --git a/sentry-logback/api/sentry-logback.api b/sentry-logback/api/sentry-logback.api index 4dc2065739e..841f2402f78 100644 --- a/sentry-logback/api/sentry-logback.api +++ b/sentry-logback/api/sentry-logback.api @@ -12,13 +12,13 @@ public class io/sentry/logback/SentryAppender : ch/qos/logback/core/Unsynchroniz protected fun createBreadcrumb (Lch/qos/logback/classic/spi/ILoggingEvent;)Lio/sentry/Breadcrumb; protected fun createEvent (Lch/qos/logback/classic/spi/ILoggingEvent;)Lio/sentry/SentryEvent; public fun getIncludeUnencodedMessage ()Z + public fun getLogsEnabled ()Z public fun getMinimumBreadcrumbLevel ()Lch/qos/logback/classic/Level; public fun getMinimumEventLevel ()Lch/qos/logback/classic/Level; public fun getMinimumLevel ()Lch/qos/logback/classic/Level; - public fun isEnableLogs ()Z - public fun setEnableLogs (Z)V public fun setEncoder (Lch/qos/logback/core/encoder/Encoder;)V public fun setIncludeUnencodedMessage (Z)V + public fun setLogsEnabled (Z)V public fun setMinimumBreadcrumbLevel (Lch/qos/logback/classic/Level;)V public fun setMinimumEventLevel (Lch/qos/logback/classic/Level;)V public fun setMinimumLevel (Lch/qos/logback/classic/Level;)V diff --git a/sentry-logback/src/main/java/io/sentry/logback/SentryAppender.java b/sentry-logback/src/main/java/io/sentry/logback/SentryAppender.java index 81335ad02db..bf99b8573bb 100644 --- a/sentry-logback/src/main/java/io/sentry/logback/SentryAppender.java +++ b/sentry-logback/src/main/java/io/sentry/logback/SentryAppender.java @@ -52,7 +52,7 @@ public class SentryAppender extends UnsynchronizedAppenderBase { private @NotNull Level minimumBreadcrumbLevel = Level.INFO; private @NotNull Level minimumEventLevel = Level.ERROR; private @NotNull Level minimumLevel = Level.INFO; - private boolean enableLogs = false; + private boolean logsEnabled = false; private @Nullable Encoder encoder; private boolean includeUnencodedMessage = false; @@ -89,7 +89,7 @@ public void start() { @Override protected void append(@NotNull ILoggingEvent eventObject) { - if (enableLogs && eventObject.getLevel().isGreaterOrEqual(minimumLevel)) { + if (logsEnabled && eventObject.getLevel().isGreaterOrEqual(minimumLevel)) { captureLog(eventObject); } if (eventObject.getLevel().isGreaterOrEqual(minimumEventLevel)) { @@ -333,12 +333,12 @@ public void setMinimumLevel(final @Nullable Level minimumLevel) { return minimumLevel; } - public void setEnableLogs(final boolean enableLogs) { - this.enableLogs = enableLogs; + public void setLogsEnabled(final boolean logsEnabled) { + this.logsEnabled = logsEnabled; } - public boolean isEnableLogs() { - return enableLogs; + public boolean getLogsEnabled() { + return logsEnabled; } @ApiStatus.Internal diff --git a/sentry-logback/src/test/kotlin/io/sentry/logback/SentryAppenderTest.kt b/sentry-logback/src/test/kotlin/io/sentry/logback/SentryAppenderTest.kt index 2bf05b12404..b3379940195 100644 --- a/sentry-logback/src/test/kotlin/io/sentry/logback/SentryAppenderTest.kt +++ b/sentry-logback/src/test/kotlin/io/sentry/logback/SentryAppenderTest.kt @@ -57,7 +57,7 @@ class SentryAppenderTest { encoder: Encoder? = null, includeUnencodedMessage: Boolean = false, sendDefaultPii: Boolean = false, - enableLogs: Boolean = false, + logsEnabled: Boolean = false, options: SentryOptions = SentryOptions(), startLater: Boolean = false, ) { @@ -83,7 +83,7 @@ class SentryAppenderTest { appender.setMinimumBreadcrumbLevel(minimumBreadcrumbLevel) appender.setMinimumEventLevel(minimumEventLevel) appender.setMinimumLevel(minimumLevel) - appender.setEnableLogs(enableLogs) + appender.setLogsEnabled(logsEnabled) appender.context = loggerContext appender.setTransportFactory(transportFactory) encoder?.context = loggerContext @@ -413,9 +413,9 @@ class SentryAppenderTest { @Test fun `does not capture logs by default`() { - fixture = Fixture(enableLogs = false) + fixture = Fixture(logsEnabled = false) - assertFalse(fixture.appender.isEnableLogs) + assertFalse(fixture.appender.logsEnabled) fixture.logger.info("this should not be captured as a log") Sentry.flush(10) @@ -424,9 +424,9 @@ class SentryAppenderTest { @Test fun `captures logs when local logs are enabled`() { - fixture = Fixture(enableLogs = true) + fixture = Fixture(logsEnabled = true) - assertTrue(fixture.appender.isEnableLogs) + assertTrue(fixture.appender.logsEnabled) fixture.logger.info("this should be captured as a log") Sentry.flush(10) @@ -444,7 +444,7 @@ class SentryAppenderTest { Fixture( minimumBreadcrumbLevel = Level.INFO, minimumEventLevel = Level.ERROR, - enableLogs = false, + logsEnabled = false, ) fixture.logger.info("this should be a breadcrumb") @@ -464,7 +464,7 @@ class SentryAppenderTest { @Test fun `converts trace log level to Sentry log level`() { - fixture = Fixture(minimumLevel = Level.TRACE, enableLogs = true) + fixture = Fixture(minimumLevel = Level.TRACE, logsEnabled = true) fixture.logger.trace("testing trace level") Sentry.flush(10) @@ -475,7 +475,7 @@ class SentryAppenderTest { @Test fun `converts debug log level to Sentry log level`() { - fixture = Fixture(minimumLevel = Level.DEBUG, enableLogs = true) + fixture = Fixture(minimumLevel = Level.DEBUG, logsEnabled = true) fixture.logger.debug("testing debug level") Sentry.flush(10) @@ -486,7 +486,7 @@ class SentryAppenderTest { @Test fun `converts info log level to Sentry log level`() { - fixture = Fixture(minimumLevel = Level.INFO, enableLogs = true) + fixture = Fixture(minimumLevel = Level.INFO, logsEnabled = true) fixture.logger.info("testing info level") Sentry.flush(10) @@ -497,7 +497,7 @@ class SentryAppenderTest { @Test fun `converts warn log level to Sentry log level`() { - fixture = Fixture(minimumLevel = Level.WARN, enableLogs = true) + fixture = Fixture(minimumLevel = Level.WARN, logsEnabled = true) fixture.logger.warn("testing warn level") Sentry.flush(10) @@ -508,7 +508,7 @@ class SentryAppenderTest { @Test fun `converts error log level to Sentry log level`() { - fixture = Fixture(minimumLevel = Level.ERROR, enableLogs = true) + fixture = Fixture(minimumLevel = Level.ERROR, logsEnabled = true) fixture.logger.error("testing error level") Sentry.flush(10) @@ -519,7 +519,7 @@ class SentryAppenderTest { @Test fun `sends formatted log message if no encoder`() { - fixture = Fixture(minimumLevel = Level.TRACE, enableLogs = true) + fixture = Fixture(minimumLevel = Level.TRACE, logsEnabled = true) fixture.logger.trace("Testing {} level", "TRACE") Sentry.flush(10) @@ -541,7 +541,7 @@ class SentryAppenderTest { fun `does not send formatted log message if encoder is available but sendDefaultPii is off`() { var encoder = PatternLayoutEncoder() encoder.pattern = "encoderadded %msg" - fixture = Fixture(minimumLevel = Level.TRACE, enableLogs = true, encoder = encoder) + fixture = Fixture(minimumLevel = Level.TRACE, logsEnabled = true, encoder = encoder) fixture.logger.trace("Testing {} level", "TRACE") Sentry.flush(10) @@ -564,7 +564,7 @@ class SentryAppenderTest { fixture = Fixture( minimumLevel = Level.TRACE, - enableLogs = true, + logsEnabled = true, sendDefaultPii = true, encoder = encoder, ) @@ -591,7 +591,7 @@ class SentryAppenderTest { fixture = Fixture( minimumLevel = Level.TRACE, - enableLogs = true, + logsEnabled = true, sendDefaultPii = true, encoder = encoder, ) @@ -864,7 +864,7 @@ class SentryAppenderTest { @Test fun `does not set template on log when logging message without parameters`() { - fixture = Fixture(minimumLevel = Level.ERROR, enableLogs = true) + fixture = Fixture(minimumLevel = Level.ERROR, logsEnabled = true) fixture.logger.error("testing message without parameters") Sentry.flush(1000) @@ -881,7 +881,7 @@ class SentryAppenderTest { @Test fun `sets template on log when logging message with parameters`() { - fixture = Fixture(minimumLevel = Level.ERROR, enableLogs = true) + fixture = Fixture(minimumLevel = Level.ERROR, logsEnabled = true) fixture.logger.error("testing message {}", "param") Sentry.flush(1000) @@ -899,7 +899,7 @@ class SentryAppenderTest { @Test fun `sets template on log when logging message with parameters and number of parameters is wrong`() { - fixture = Fixture(minimumLevel = Level.ERROR, enableLogs = true) + fixture = Fixture(minimumLevel = Level.ERROR, logsEnabled = true) fixture.logger.error("testing message {} {} {}", "param1", "param2") Sentry.flush(1000) @@ -927,7 +927,7 @@ class SentryAppenderTest { fixture = Fixture( minimumLevel = Level.ERROR, - enableLogs = true, + logsEnabled = true, encoder = encoder, sendDefaultPii = false, ) @@ -953,7 +953,7 @@ class SentryAppenderTest { fixture = Fixture( minimumLevel = Level.ERROR, - enableLogs = true, + logsEnabled = true, encoder = encoder, includeUnencodedMessage = true, ) @@ -980,7 +980,7 @@ class SentryAppenderTest { fixture = Fixture( minimumLevel = Level.ERROR, - enableLogs = true, + logsEnabled = true, encoder = encoder, sendDefaultPii = true, ) @@ -1001,7 +1001,8 @@ class SentryAppenderTest { @Test fun `sets properties from MDC as attributes on logs`() { - fixture = Fixture(minimumLevel = Level.INFO, enableLogs = true, contextTags = listOf("someTag")) + fixture = + Fixture(minimumLevel = Level.INFO, logsEnabled = true, contextTags = listOf("someTag")) MDC.put("someTag", "someValue") MDC.put("otherTag", "otherValue") fixture.logger.info("testing MDC properties in logs") diff --git a/sentry-samples/sentry-samples-jul/src/main/resources/logging.properties b/sentry-samples/sentry-samples-jul/src/main/resources/logging.properties index db3026bfb9f..a3381afbc87 100644 --- a/sentry-samples/sentry-samples-jul/src/main/resources/logging.properties +++ b/sentry-samples/sentry-samples-jul/src/main/resources/logging.properties @@ -2,7 +2,7 @@ io.sentry.jul.SentryHandler.minimumEventLevel=INFO io.sentry.jul.SentryHandler.minimumBreadcrumbLevel=CONFIG io.sentry.jul.SentryHandler.minimumLevel=INFO io.sentry.jul.SentryHandler.printfStyle=true -io.sentry.jul.SentryHandler.enableLogs=true +io.sentry.jul.SentryHandler.logsEnabled=true io.sentry.jul.SentryHandler.level=FINEST java.util.logging.ConsoleHandler.level = FINE handlers=io.sentry.jul.SentryHandler diff --git a/sentry-samples/sentry-samples-log4j2/src/main/resources/log4j2.xml b/sentry-samples/sentry-samples-log4j2/src/main/resources/log4j2.xml index 028e449b06a..64479e2155a 100644 --- a/sentry-samples/sentry-samples-log4j2/src/main/resources/log4j2.xml +++ b/sentry-samples/sentry-samples-log4j2/src/main/resources/log4j2.xml @@ -12,7 +12,7 @@ minimumBreadcrumbLevel="DEBUG" minimumEventLevel="WARN" minimumLevel="DEBUG" - enableLogs="true" + logsEnabled="true" debug="true" contextTags="userId,requestId" /> diff --git a/sentry-samples/sentry-samples-logback/src/main/resources/logback.xml b/sentry-samples/sentry-samples-logback/src/main/resources/logback.xml index 196486cf807..bc42723a905 100644 --- a/sentry-samples/sentry-samples-logback/src/main/resources/logback.xml +++ b/sentry-samples/sentry-samples-logback/src/main/resources/logback.xml @@ -14,7 +14,7 @@ userId requestId - true + true WARN diff --git a/sentry-samples/sentry-samples-spring-boot-4-log4j2/src/main/resources/application.properties b/sentry-samples/sentry-samples-spring-boot-4-log4j2/src/main/resources/application.properties index 96ec03757ce..426aac28b27 100644 --- a/sentry-samples/sentry-samples-spring-boot-4-log4j2/src/main/resources/application.properties +++ b/sentry-samples/sentry-samples-spring-boot-4-log4j2/src/main/resources/application.properties @@ -17,7 +17,7 @@ sentry.enable-backpressure-handling=true sentry.enable-spotlight=true sentry.enablePrettySerializationOutput=false sentry.in-app-includes="io.sentry.samples" -sentry.logs.enabled=true +sentry.logging.logs-enabled=true sentry.profile-session-sample-rate=1.0 sentry.profiling-traces-dir-path=tmp/sentry/profiling-traces sentry.profile-lifecycle=TRACE diff --git a/sentry-samples/sentry-samples-spring-boot-4-opentelemetry-noagent/src/main/resources/application.properties b/sentry-samples/sentry-samples-spring-boot-4-opentelemetry-noagent/src/main/resources/application.properties index d8b1bcd2bb6..c21e62a6285 100644 --- a/sentry-samples/sentry-samples-spring-boot-4-opentelemetry-noagent/src/main/resources/application.properties +++ b/sentry-samples/sentry-samples-spring-boot-4-opentelemetry-noagent/src/main/resources/application.properties @@ -15,7 +15,7 @@ sentry.graphql.ignored-error-types=SOME_ERROR,ANOTHER_ERROR sentry.enable-backpressure-handling=true sentry.enable-spotlight=true sentry.enablePrettySerializationOutput=false -sentry.logging.enable-logs=true +sentry.logging.logs-enabled=true sentry.in-app-includes="io.sentry.samples" sentry.profile-session-sample-rate=1.0 sentry.profiling-traces-dir-path=tmp/sentry/profiling-traces diff --git a/sentry-samples/sentry-samples-spring-boot-4-opentelemetry/src/main/resources/application.properties b/sentry-samples/sentry-samples-spring-boot-4-opentelemetry/src/main/resources/application.properties index bf302c6dd05..0867acf41d6 100644 --- a/sentry-samples/sentry-samples-spring-boot-4-opentelemetry/src/main/resources/application.properties +++ b/sentry-samples/sentry-samples-spring-boot-4-opentelemetry/src/main/resources/application.properties @@ -15,7 +15,7 @@ sentry.graphql.ignored-error-types=SOME_ERROR,ANOTHER_ERROR sentry.enable-backpressure-handling=true sentry.enable-spotlight=true sentry.enablePrettySerializationOutput=false -sentry.logging.enable-logs=true +sentry.logging.logs-enabled=true sentry.in-app-includes="io.sentry.samples" sentry.profile-session-sample-rate=1.0 sentry.profiling-traces-dir-path=tmp/sentry/profiling-traces diff --git a/sentry-samples/sentry-samples-spring-boot-4-otlp/src/main/resources/application.properties b/sentry-samples/sentry-samples-spring-boot-4-otlp/src/main/resources/application.properties index 05a35327d86..a49f6244ad7 100644 --- a/sentry-samples/sentry-samples-spring-boot-4-otlp/src/main/resources/application.properties +++ b/sentry-samples/sentry-samples-spring-boot-4-otlp/src/main/resources/application.properties @@ -16,7 +16,7 @@ sentry.enable-backpressure-handling=true sentry.enable-spotlight=true sentry.enablePrettySerializationOutput=false sentry.in-app-includes="io.sentry.samples" -sentry.logging.enable-logs=true +sentry.logging.logs-enabled=true sentry.profile-session-sample-rate=1.0 sentry.profiling-traces-dir-path=tmp/sentry/profiling-traces sentry.profile-lifecycle=TRACE diff --git a/sentry-samples/sentry-samples-spring-boot-4-webflux/src/main/resources/application.properties b/sentry-samples/sentry-samples-spring-boot-4-webflux/src/main/resources/application.properties index 2e897e5c714..cb54e513d93 100644 --- a/sentry-samples/sentry-samples-spring-boot-4-webflux/src/main/resources/application.properties +++ b/sentry-samples/sentry-samples-spring-boot-4-webflux/src/main/resources/application.properties @@ -10,7 +10,7 @@ sentry.logging.minimum-breadcrumb-level=debug sentry.reactive.thread-local-accessor-enabled=true sentry.traces-sample-rate=1.0 sentry.enable-backpressure-handling=true -sentry.logging.enable-logs=true +sentry.logging.logs-enabled=true sentry.enable-spotlight=true sentry.profile-session-sample-rate=1.0 sentry.profiling-traces-dir-path=tmp/sentry/profiling-traces diff --git a/sentry-samples/sentry-samples-spring-boot-4/src/main/resources/application.properties b/sentry-samples/sentry-samples-spring-boot-4/src/main/resources/application.properties index 40a5843c134..3ba334d8f34 100644 --- a/sentry-samples/sentry-samples-spring-boot-4/src/main/resources/application.properties +++ b/sentry-samples/sentry-samples-spring-boot-4/src/main/resources/application.properties @@ -16,7 +16,7 @@ sentry.enable-backpressure-handling=true sentry.enable-spotlight=true sentry.enablePrettySerializationOutput=false sentry.in-app-includes="io.sentry.samples" -sentry.logging.enable-logs=true +sentry.logging.logs-enabled=true sentry.profile-session-sample-rate=1.0 sentry.profiling-traces-dir-path=tmp/sentry/profiling-traces sentry.profile-lifecycle=TRACE diff --git a/sentry-samples/sentry-samples-spring-boot-jakarta-log4j2/src/main/resources/application.properties b/sentry-samples/sentry-samples-spring-boot-jakarta-log4j2/src/main/resources/application.properties index d413cded851..8bd8046d2d0 100644 --- a/sentry-samples/sentry-samples-spring-boot-jakarta-log4j2/src/main/resources/application.properties +++ b/sentry-samples/sentry-samples-spring-boot-jakarta-log4j2/src/main/resources/application.properties @@ -17,7 +17,7 @@ sentry.enable-backpressure-handling=true sentry.enable-spotlight=false sentry.enablePrettySerializationOutput=false sentry.in-app-includes="io.sentry.samples" -sentry.logs.enabled=true +sentry.logging.logs-enabled=true sentry.profile-session-sample-rate=1.0 sentry.profiling-traces-dir-path=tmp/sentry/profiling-traces sentry.profile-lifecycle=TRACE diff --git a/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry-noagent/src/main/resources/application.properties b/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry-noagent/src/main/resources/application.properties index 7f5880b741a..1e056aead2c 100644 --- a/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry-noagent/src/main/resources/application.properties +++ b/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry-noagent/src/main/resources/application.properties @@ -15,7 +15,7 @@ sentry.graphql.ignored-error-types=SOME_ERROR,ANOTHER_ERROR sentry.enable-backpressure-handling=true sentry.enable-spotlight=true sentry.enablePrettySerializationOutput=false -sentry.logging.enable-logs=true +sentry.logging.logs-enabled=true sentry.in-app-includes="io.sentry.samples" sentry.profile-session-sample-rate=1.0 sentry.profiling-traces-dir-path=tmp/sentry/profiling-traces diff --git a/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry/src/main/resources/application.properties b/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry/src/main/resources/application.properties index 4b80755d846..22b7ced935d 100644 --- a/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry/src/main/resources/application.properties +++ b/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry/src/main/resources/application.properties @@ -15,7 +15,7 @@ sentry.graphql.ignored-error-types=SOME_ERROR,ANOTHER_ERROR sentry.enable-backpressure-handling=true sentry.enable-spotlight=true sentry.enablePrettySerializationOutput=false -sentry.logging.enable-logs=true +sentry.logging.logs-enabled=true sentry.in-app-includes="io.sentry.samples" sentry.profile-session-sample-rate=1.0 sentry.profiling-traces-dir-path=tmp/sentry/profiling-traces diff --git a/sentry-samples/sentry-samples-spring-boot-jakarta/src/main/resources/application.properties b/sentry-samples/sentry-samples-spring-boot-jakarta/src/main/resources/application.properties index d71c2c433ab..afd27690ff3 100644 --- a/sentry-samples/sentry-samples-spring-boot-jakarta/src/main/resources/application.properties +++ b/sentry-samples/sentry-samples-spring-boot-jakarta/src/main/resources/application.properties @@ -16,7 +16,7 @@ sentry.enable-backpressure-handling=true sentry.enable-spotlight=false sentry.enablePrettySerializationOutput=false sentry.in-app-includes="io.sentry.samples" -sentry.logging.enable-logs=true +sentry.logging.logs-enabled=true sentry.profile-session-sample-rate=1.0 sentry.profiling-traces-dir-path=tmp/sentry/profiling-traces sentry.profile-lifecycle=TRACE diff --git a/sentry-samples/sentry-samples-spring-boot-opentelemetry-noagent/src/main/resources/application.properties b/sentry-samples/sentry-samples-spring-boot-opentelemetry-noagent/src/main/resources/application.properties index af217277c78..5b739ad4047 100644 --- a/sentry-samples/sentry-samples-spring-boot-opentelemetry-noagent/src/main/resources/application.properties +++ b/sentry-samples/sentry-samples-spring-boot-opentelemetry-noagent/src/main/resources/application.properties @@ -14,7 +14,7 @@ sentry.debug=true sentry.graphql.ignored-error-types=SOME_ERROR,ANOTHER_ERROR sentry.enable-backpressure-handling=true sentry.enable-spotlight=true -sentry.logging.enable-logs=true +sentry.logging.logs-enabled=true sentry.in-app-includes="io.sentry.samples" sentry.profile-session-sample-rate=1.0 sentry.profiling-traces-dir-path=tmp/sentry/profiling-traces diff --git a/sentry-samples/sentry-samples-spring-boot-opentelemetry/src/main/resources/application.properties b/sentry-samples/sentry-samples-spring-boot-opentelemetry/src/main/resources/application.properties index 404549c12da..ffdfa4fa28b 100644 --- a/sentry-samples/sentry-samples-spring-boot-opentelemetry/src/main/resources/application.properties +++ b/sentry-samples/sentry-samples-spring-boot-opentelemetry/src/main/resources/application.properties @@ -14,7 +14,7 @@ sentry.debug=true sentry.graphql.ignored-error-types=SOME_ERROR,ANOTHER_ERROR sentry.enable-backpressure-handling=true sentry.enable-spotlight=true -sentry.logging.enable-logs=true +sentry.logging.logs-enabled=true sentry.in-app-includes="io.sentry.samples" sentry.profile-session-sample-rate=1.0 sentry.profiling-traces-dir-path=tmp/sentry/profiling-traces diff --git a/sentry-samples/sentry-samples-spring-boot-webflux-jakarta/src/main/resources/application.properties b/sentry-samples/sentry-samples-spring-boot-webflux-jakarta/src/main/resources/application.properties index 45d04440f88..bd1df844351 100644 --- a/sentry-samples/sentry-samples-spring-boot-webflux-jakarta/src/main/resources/application.properties +++ b/sentry-samples/sentry-samples-spring-boot-webflux-jakarta/src/main/resources/application.properties @@ -10,7 +10,7 @@ sentry.logging.minimum-breadcrumb-level=debug sentry.reactive.thread-local-accessor-enabled=true sentry.traces-sample-rate=1.0 sentry.enable-backpressure-handling=true -sentry.logging.enable-logs=true +sentry.logging.logs-enabled=true sentry.enable-spotlight=true sentry.in-app-includes="io.sentry.samples" sentry.profile-session-sample-rate=1.0 diff --git a/sentry-samples/sentry-samples-spring-boot-webflux/src/main/resources/application.properties b/sentry-samples/sentry-samples-spring-boot-webflux/src/main/resources/application.properties index 5e85915a9c9..d8ff798353c 100644 --- a/sentry-samples/sentry-samples-spring-boot-webflux/src/main/resources/application.properties +++ b/sentry-samples/sentry-samples-spring-boot-webflux/src/main/resources/application.properties @@ -12,7 +12,7 @@ spring.graphql.graphiql.enabled=true spring.graphql.websocket.path=/graphql spring.graphql.schema.printer.enabled=true sentry.enable-backpressure-handling=true -sentry.logging.enable-logs=true +sentry.logging.logs-enabled=true sentry.enable-spotlight=true sentry.in-app-includes="io.sentry.samples" sentry.profile-session-sample-rate=1.0 diff --git a/sentry-samples/sentry-samples-spring-boot/src/main/resources/application.properties b/sentry-samples/sentry-samples-spring-boot/src/main/resources/application.properties index bce0ce41f53..e51e2076690 100644 --- a/sentry-samples/sentry-samples-spring-boot/src/main/resources/application.properties +++ b/sentry-samples/sentry-samples-spring-boot/src/main/resources/application.properties @@ -14,7 +14,7 @@ sentry.debug=true sentry.graphql.ignored-error-types=SOME_ERROR,ANOTHER_ERROR sentry.enable-backpressure-handling=true sentry.enable-spotlight=true -sentry.logging.enable-logs=true +sentry.logging.logs-enabled=true sentry.in-app-includes="io.sentry.samples" sentry.profile-session-sample-rate=1.0 sentry.profiling-traces-dir-path=tmp/sentry/profiling-traces diff --git a/sentry-spring-boot-4/api/sentry-spring-boot-4.api b/sentry-spring-boot-4/api/sentry-spring-boot-4.api index 7ea571b2d13..38b67f1ff37 100644 --- a/sentry-spring-boot-4/api/sentry-spring-boot-4.api +++ b/sentry-spring-boot-4/api/sentry-spring-boot-4.api @@ -68,14 +68,14 @@ public class io/sentry/spring/boot4/SentryProperties$Graphql { public class io/sentry/spring/boot4/SentryProperties$Logging { public fun ()V public fun getLoggers ()Ljava/util/List; + public fun getLogsEnabled ()Z public fun getMinimumBreadcrumbLevel ()Lorg/slf4j/event/Level; public fun getMinimumEventLevel ()Lorg/slf4j/event/Level; public fun getMinimumLevel ()Lorg/slf4j/event/Level; - public fun isEnableLogs ()Z public fun isEnabled ()Z - public fun setEnableLogs (Z)V public fun setEnabled (Z)V public fun setLoggers (Ljava/util/List;)V + public fun setLogsEnabled (Z)V public fun setMinimumBreadcrumbLevel (Lorg/slf4j/event/Level;)V public fun setMinimumEventLevel (Lorg/slf4j/event/Level;)V public fun setMinimumLevel (Lorg/slf4j/event/Level;)V diff --git a/sentry-spring-boot-4/src/main/java/io/sentry/spring/boot4/SentryLog4j2Initializer.java b/sentry-spring-boot-4/src/main/java/io/sentry/spring/boot4/SentryLog4j2Initializer.java index fe2d8a301a8..bb20d47a35a 100644 --- a/sentry-spring-boot-4/src/main/java/io/sentry/spring/boot4/SentryLog4j2Initializer.java +++ b/sentry-spring-boot-4/src/main/java/io/sentry/spring/boot4/SentryLog4j2Initializer.java @@ -95,7 +95,7 @@ public void onApplicationEvent(final @NotNull ApplicationEvent event) { toLog4jLevel(sentryProperties.getLogging().getMinimumBreadcrumbLevel()), toLog4jLevel(sentryProperties.getLogging().getMinimumEventLevel()), toLog4jLevel(sentryProperties.getLogging().getMinimumLevel()), - sentryProperties.getLogging().isEnableLogs(), + sentryProperties.getLogging().getLogsEnabled(), null, null, ScopesAdapter.getInstance(), diff --git a/sentry-spring-boot-4/src/main/java/io/sentry/spring/boot4/SentryLogbackInitializer.java b/sentry-spring-boot-4/src/main/java/io/sentry/spring/boot4/SentryLogbackInitializer.java index c51e2cda077..b2f498e4401 100644 --- a/sentry-spring-boot-4/src/main/java/io/sentry/spring/boot4/SentryLogbackInitializer.java +++ b/sentry-spring-boot-4/src/main/java/io/sentry/spring/boot4/SentryLogbackInitializer.java @@ -45,7 +45,7 @@ public void onApplicationEvent(final @NotNull ApplicationEvent event) { if (!isSentryAppenderRegistered(logger)) { final SentryAppender sentryAppender = getSentryAppender(); - sentryAppender.setEnableLogs(sentryProperties.getLogging().isEnableLogs()); + sentryAppender.setLogsEnabled(sentryProperties.getLogging().getLogsEnabled()); Optional.ofNullable(sentryProperties.getLogging().getMinimumBreadcrumbLevel()) .map(slf4jLevel -> Level.toLevel(slf4jLevel.name())) .ifPresent(sentryAppender::setMinimumBreadcrumbLevel); diff --git a/sentry-spring-boot-4/src/main/java/io/sentry/spring/boot4/SentryProperties.java b/sentry-spring-boot-4/src/main/java/io/sentry/spring/boot4/SentryProperties.java index 41358f8cc84..9bc86185ff4 100644 --- a/sentry-spring-boot-4/src/main/java/io/sentry/spring/boot4/SentryProperties.java +++ b/sentry-spring-boot-4/src/main/java/io/sentry/spring/boot4/SentryProperties.java @@ -130,7 +130,7 @@ public static class Logging { private boolean enabled = true; /** Enable/Disable Sentry Logs capture from the auto-configured appender. */ - private boolean enableLogs = false; + private boolean logsEnabled = false; /** Minimum logging level for recording breadcrumbs. */ private @Nullable Level minimumBreadcrumbLevel; @@ -152,12 +152,12 @@ public void setEnabled(boolean enabled) { this.enabled = enabled; } - public boolean isEnableLogs() { - return enableLogs; + public boolean getLogsEnabled() { + return logsEnabled; } - public void setEnableLogs(boolean enableLogs) { - this.enableLogs = enableLogs; + public void setLogsEnabled(boolean logsEnabled) { + this.logsEnabled = logsEnabled; } public @Nullable Level getMinimumBreadcrumbLevel() { diff --git a/sentry-spring-boot-4/src/test/kotlin/io/sentry/spring/boot4/SentryAutoConfigurationTest.kt b/sentry-spring-boot-4/src/test/kotlin/io/sentry/spring/boot4/SentryAutoConfigurationTest.kt index e8ec76cdbbb..a201f212a54 100644 --- a/sentry-spring-boot-4/src/test/kotlin/io/sentry/spring/boot4/SentryAutoConfigurationTest.kt +++ b/sentry-spring-boot-4/src/test/kotlin/io/sentry/spring/boot4/SentryAutoConfigurationTest.kt @@ -244,7 +244,7 @@ class SentryAutoConfigurationTest { "sentry.cron.default-timezone=America/New_York", "sentry.cron.default-failure-issue-threshold=40", "sentry.cron.default-recovery-threshold=50", - "sentry.logging.enable-logs=true", + "sentry.logging.logs-enabled=true", "sentry.strict-trace-continuation=true", "sentry.org-id=12345", ) @@ -301,7 +301,7 @@ class SentryAutoConfigurationTest { assertThat(options.cron!!.defaultTimezone).isEqualTo("America/New_York") assertThat(options.cron!!.defaultFailureIssueThreshold).isEqualTo(40L) assertThat(options.cron!!.defaultRecoveryThreshold).isEqualTo(50L) - assertThat(options.logging.isEnableLogs).isTrue() + assertThat(options.logging.logsEnabled).isTrue() assertThat(options.isStrictTraceContinuation).isEqualTo(true) assertThat(options.orgId).isEqualTo("12345") } diff --git a/sentry-spring-boot-4/src/test/kotlin/io/sentry/spring/boot4/SentryLog4j2AppenderAutoConfigurationTest.kt b/sentry-spring-boot-4/src/test/kotlin/io/sentry/spring/boot4/SentryLog4j2AppenderAutoConfigurationTest.kt index 2518b11a402..b5ead41901d 100644 --- a/sentry-spring-boot-4/src/test/kotlin/io/sentry/spring/boot4/SentryLog4j2AppenderAutoConfigurationTest.kt +++ b/sentry-spring-boot-4/src/test/kotlin/io/sentry/spring/boot4/SentryLog4j2AppenderAutoConfigurationTest.kt @@ -77,7 +77,6 @@ class SentryLog4j2AppenderAutoConfigurationTest { .withPropertyValues( "sentry.dsn=http://key@localhost/proj", "sentry.logging.enabled=true", - "sentry.logs.enabled=true", ) .withUserConfiguration(MockTransportConfiguration::class.java) @@ -201,7 +200,7 @@ class SentryLog4j2AppenderAutoConfigurationTest { @Test fun `forwards Sentry Logs when enabled`() { - logsRunner.withPropertyValues("sentry.logging.enable-logs=true").run { + logsRunner.withPropertyValues("sentry.logging.logs-enabled=true").run { LogManager.getLogger("io.sentry.spring.boot4.logs-enabled").error("enabled log") Sentry.flush(1000) @@ -239,6 +238,7 @@ class SentryLog4j2AppenderAutoConfigurationTest { null, null, null, + false, null, null, io.sentry.ScopesAdapter.getInstance(), diff --git a/sentry-spring-boot-4/src/test/kotlin/io/sentry/spring/boot4/SentryLogbackAppenderAutoConfigurationTest.kt b/sentry-spring-boot-4/src/test/kotlin/io/sentry/spring/boot4/SentryLogbackAppenderAutoConfigurationTest.kt index be3f7863b03..90e756d59b6 100644 --- a/sentry-spring-boot-4/src/test/kotlin/io/sentry/spring/boot4/SentryLogbackAppenderAutoConfigurationTest.kt +++ b/sentry-spring-boot-4/src/test/kotlin/io/sentry/spring/boot4/SentryLogbackAppenderAutoConfigurationTest.kt @@ -112,7 +112,7 @@ class SentryLogbackAppenderAutoConfigurationTest { "sentry.logging.minimum-event-level=info", "sentry.logging.minimum-breadcrumb-level=debug", "sentry.logging.minimum-level=error", - "sentry.logging.enable-logs=true", + "sentry.logging.logs-enabled=true", ) .run { val appenders = rootLogger.getAppenders(SentryAppender::class.java) @@ -122,7 +122,7 @@ class SentryLogbackAppenderAutoConfigurationTest { assertThat(sentryAppender.minimumBreadcrumbLevel).isEqualTo(Level.DEBUG) assertThat(sentryAppender.minimumEventLevel).isEqualTo(Level.INFO) assertThat(sentryAppender.minimumLevel).isEqualTo(Level.ERROR) - assertThat(sentryAppender.isEnableLogs).isTrue() + assertThat(sentryAppender.logsEnabled).isTrue() } } @@ -131,7 +131,7 @@ class SentryLogbackAppenderAutoConfigurationTest { dsnEnabledRunner.run { val sentryAppender = rootLogger.getAppenders(SentryAppender::class.java).single() - assertThat((sentryAppender as SentryAppender).isEnableLogs).isFalse() + assertThat((sentryAppender as SentryAppender).logsEnabled).isFalse() } } diff --git a/sentry-spring-boot-jakarta/api/sentry-spring-boot-jakarta.api b/sentry-spring-boot-jakarta/api/sentry-spring-boot-jakarta.api index c8f55d822a2..2e11efaa2a5 100644 --- a/sentry-spring-boot-jakarta/api/sentry-spring-boot-jakarta.api +++ b/sentry-spring-boot-jakarta/api/sentry-spring-boot-jakarta.api @@ -68,14 +68,14 @@ public class io/sentry/spring/boot/jakarta/SentryProperties$Graphql { public class io/sentry/spring/boot/jakarta/SentryProperties$Logging { public fun ()V public fun getLoggers ()Ljava/util/List; + public fun getLogsEnabled ()Z public fun getMinimumBreadcrumbLevel ()Lorg/slf4j/event/Level; public fun getMinimumEventLevel ()Lorg/slf4j/event/Level; public fun getMinimumLevel ()Lorg/slf4j/event/Level; - public fun isEnableLogs ()Z public fun isEnabled ()Z - public fun setEnableLogs (Z)V public fun setEnabled (Z)V public fun setLoggers (Ljava/util/List;)V + public fun setLogsEnabled (Z)V public fun setMinimumBreadcrumbLevel (Lorg/slf4j/event/Level;)V public fun setMinimumEventLevel (Lorg/slf4j/event/Level;)V public fun setMinimumLevel (Lorg/slf4j/event/Level;)V diff --git a/sentry-spring-boot-jakarta/src/main/java/io/sentry/spring/boot/jakarta/SentryLog4j2Initializer.java b/sentry-spring-boot-jakarta/src/main/java/io/sentry/spring/boot/jakarta/SentryLog4j2Initializer.java index 4b2588da8e7..8db89bf9f20 100644 --- a/sentry-spring-boot-jakarta/src/main/java/io/sentry/spring/boot/jakarta/SentryLog4j2Initializer.java +++ b/sentry-spring-boot-jakarta/src/main/java/io/sentry/spring/boot/jakarta/SentryLog4j2Initializer.java @@ -95,7 +95,7 @@ public void onApplicationEvent(final @NotNull ApplicationEvent event) { toLog4jLevel(sentryProperties.getLogging().getMinimumBreadcrumbLevel()), toLog4jLevel(sentryProperties.getLogging().getMinimumEventLevel()), toLog4jLevel(sentryProperties.getLogging().getMinimumLevel()), - sentryProperties.getLogging().isEnableLogs(), + sentryProperties.getLogging().getLogsEnabled(), null, null, ScopesAdapter.getInstance(), diff --git a/sentry-spring-boot-jakarta/src/main/java/io/sentry/spring/boot/jakarta/SentryLogbackInitializer.java b/sentry-spring-boot-jakarta/src/main/java/io/sentry/spring/boot/jakarta/SentryLogbackInitializer.java index fa6cd7a76ce..e7902c99668 100644 --- a/sentry-spring-boot-jakarta/src/main/java/io/sentry/spring/boot/jakarta/SentryLogbackInitializer.java +++ b/sentry-spring-boot-jakarta/src/main/java/io/sentry/spring/boot/jakarta/SentryLogbackInitializer.java @@ -45,7 +45,7 @@ public void onApplicationEvent(final @NotNull ApplicationEvent event) { if (!isSentryAppenderRegistered(logger)) { final SentryAppender sentryAppender = getSentryAppender(); - sentryAppender.setEnableLogs(sentryProperties.getLogging().isEnableLogs()); + sentryAppender.setLogsEnabled(sentryProperties.getLogging().getLogsEnabled()); Optional.ofNullable(sentryProperties.getLogging().getMinimumBreadcrumbLevel()) .map(slf4jLevel -> Level.toLevel(slf4jLevel.name())) .ifPresent(sentryAppender::setMinimumBreadcrumbLevel); diff --git a/sentry-spring-boot-jakarta/src/main/java/io/sentry/spring/boot/jakarta/SentryProperties.java b/sentry-spring-boot-jakarta/src/main/java/io/sentry/spring/boot/jakarta/SentryProperties.java index 223dcce8696..cdfc9229a20 100644 --- a/sentry-spring-boot-jakarta/src/main/java/io/sentry/spring/boot/jakarta/SentryProperties.java +++ b/sentry-spring-boot-jakarta/src/main/java/io/sentry/spring/boot/jakarta/SentryProperties.java @@ -130,7 +130,7 @@ public static class Logging { private boolean enabled = true; /** Enable/Disable Sentry Logs capture from the auto-configured appender. */ - private boolean enableLogs = false; + private boolean logsEnabled = false; /** Minimum logging level for recording breadcrumbs. */ private @Nullable Level minimumBreadcrumbLevel; @@ -152,12 +152,12 @@ public void setEnabled(boolean enabled) { this.enabled = enabled; } - public boolean isEnableLogs() { - return enableLogs; + public boolean getLogsEnabled() { + return logsEnabled; } - public void setEnableLogs(boolean enableLogs) { - this.enableLogs = enableLogs; + public void setLogsEnabled(boolean logsEnabled) { + this.logsEnabled = logsEnabled; } public @Nullable Level getMinimumBreadcrumbLevel() { diff --git a/sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/SentryAutoConfigurationTest.kt b/sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/SentryAutoConfigurationTest.kt index 6d584c9d609..ba3f11aa85a 100644 --- a/sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/SentryAutoConfigurationTest.kt +++ b/sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/SentryAutoConfigurationTest.kt @@ -246,7 +246,7 @@ class SentryAutoConfigurationTest { "sentry.cron.default-timezone=America/New_York", "sentry.cron.default-failure-issue-threshold=40", "sentry.cron.default-recovery-threshold=50", - "sentry.logging.enable-logs=true", + "sentry.logging.logs-enabled=true", "sentry.profile-session-sample-rate=1.0", "sentry.profiling-traces-dir-path=tmp/sentry/profiling-traces", "sentry.profile-lifecycle=TRACE", @@ -305,7 +305,7 @@ class SentryAutoConfigurationTest { assertThat(options.cron!!.defaultTimezone).isEqualTo("America/New_York") assertThat(options.cron!!.defaultFailureIssueThreshold).isEqualTo(40L) assertThat(options.cron!!.defaultRecoveryThreshold).isEqualTo(50L) - assertThat(options.logging.isEnableLogs).isTrue() + assertThat(options.logging.logsEnabled).isTrue() assertThat(options.profileSessionSampleRate).isEqualTo(1.0) assertThat(options.profilingTracesDirPath) .startsWith(File("tmp/sentry/profiling-traces").absolutePath) diff --git a/sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/SentryLog4j2AppenderAutoConfigurationTest.kt b/sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/SentryLog4j2AppenderAutoConfigurationTest.kt index 993398923be..f9a0c1f24c0 100644 --- a/sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/SentryLog4j2AppenderAutoConfigurationTest.kt +++ b/sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/SentryLog4j2AppenderAutoConfigurationTest.kt @@ -77,7 +77,6 @@ class SentryLog4j2AppenderAutoConfigurationTest { .withPropertyValues( "sentry.dsn=http://key@localhost/proj", "sentry.logging.enabled=true", - "sentry.logs.enabled=true", ) .withUserConfiguration(MockTransportConfiguration::class.java) @@ -201,7 +200,7 @@ class SentryLog4j2AppenderAutoConfigurationTest { @Test fun `forwards Sentry Logs when enabled`() { - logsRunner.withPropertyValues("sentry.logging.enable-logs=true").run { + logsRunner.withPropertyValues("sentry.logging.logs-enabled=true").run { LogManager.getLogger("io.sentry.spring.boot.jakarta.logs-enabled").error("enabled log") Sentry.flush(1000) @@ -239,6 +238,7 @@ class SentryLog4j2AppenderAutoConfigurationTest { null, null, null, + false, null, null, io.sentry.ScopesAdapter.getInstance(), diff --git a/sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/SentryLogbackAppenderAutoConfigurationTest.kt b/sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/SentryLogbackAppenderAutoConfigurationTest.kt index 5dfcd5cd324..fb324265b97 100644 --- a/sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/SentryLogbackAppenderAutoConfigurationTest.kt +++ b/sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/SentryLogbackAppenderAutoConfigurationTest.kt @@ -112,7 +112,7 @@ class SentryLogbackAppenderAutoConfigurationTest { "sentry.logging.minimum-event-level=info", "sentry.logging.minimum-breadcrumb-level=debug", "sentry.logging.minimum-level=error", - "sentry.logging.enable-logs=true", + "sentry.logging.logs-enabled=true", ) .run { val appenders = rootLogger.getAppenders(SentryAppender::class.java) @@ -122,7 +122,7 @@ class SentryLogbackAppenderAutoConfigurationTest { assertThat(sentryAppender.minimumBreadcrumbLevel).isEqualTo(Level.DEBUG) assertThat(sentryAppender.minimumEventLevel).isEqualTo(Level.INFO) assertThat(sentryAppender.minimumLevel).isEqualTo(Level.ERROR) - assertThat(sentryAppender.isEnableLogs).isTrue() + assertThat(sentryAppender.logsEnabled).isTrue() } } @@ -131,7 +131,7 @@ class SentryLogbackAppenderAutoConfigurationTest { dsnEnabledRunner.run { val sentryAppender = rootLogger.getAppenders(SentryAppender::class.java).single() - assertThat((sentryAppender as SentryAppender).isEnableLogs).isFalse() + assertThat((sentryAppender as SentryAppender).logsEnabled).isFalse() } } diff --git a/sentry-spring-boot/api/sentry-spring-boot.api b/sentry-spring-boot/api/sentry-spring-boot.api index 3a34fcc542d..9aa4f3caf0e 100644 --- a/sentry-spring-boot/api/sentry-spring-boot.api +++ b/sentry-spring-boot/api/sentry-spring-boot.api @@ -53,14 +53,14 @@ public class io/sentry/spring/boot/SentryProperties$Graphql { public class io/sentry/spring/boot/SentryProperties$Logging { public fun ()V public fun getLoggers ()Ljava/util/List; + public fun getLogsEnabled ()Z public fun getMinimumBreadcrumbLevel ()Lorg/slf4j/event/Level; public fun getMinimumEventLevel ()Lorg/slf4j/event/Level; public fun getMinimumLevel ()Lorg/slf4j/event/Level; - public fun isEnableLogs ()Z public fun isEnabled ()Z - public fun setEnableLogs (Z)V public fun setEnabled (Z)V public fun setLoggers (Ljava/util/List;)V + public fun setLogsEnabled (Z)V public fun setMinimumBreadcrumbLevel (Lorg/slf4j/event/Level;)V public fun setMinimumEventLevel (Lorg/slf4j/event/Level;)V public fun setMinimumLevel (Lorg/slf4j/event/Level;)V diff --git a/sentry-spring-boot/src/main/java/io/sentry/spring/boot/SentryLogbackInitializer.java b/sentry-spring-boot/src/main/java/io/sentry/spring/boot/SentryLogbackInitializer.java index 6997aca3fc8..a064d8e1299 100644 --- a/sentry-spring-boot/src/main/java/io/sentry/spring/boot/SentryLogbackInitializer.java +++ b/sentry-spring-boot/src/main/java/io/sentry/spring/boot/SentryLogbackInitializer.java @@ -45,7 +45,7 @@ public void onApplicationEvent(final @NotNull ApplicationEvent event) { if (!isSentryAppenderRegistered(logger)) { final SentryAppender sentryAppender = getSentryAppender(); - sentryAppender.setEnableLogs(sentryProperties.getLogging().isEnableLogs()); + sentryAppender.setLogsEnabled(sentryProperties.getLogging().getLogsEnabled()); Optional.ofNullable(sentryProperties.getLogging().getMinimumBreadcrumbLevel()) .map(slf4jLevel -> Level.toLevel(slf4jLevel.name())) .ifPresent(sentryAppender::setMinimumBreadcrumbLevel); diff --git a/sentry-spring-boot/src/main/java/io/sentry/spring/boot/SentryProperties.java b/sentry-spring-boot/src/main/java/io/sentry/spring/boot/SentryProperties.java index 876cb552571..f4fc3bb8828 100644 --- a/sentry-spring-boot/src/main/java/io/sentry/spring/boot/SentryProperties.java +++ b/sentry-spring-boot/src/main/java/io/sentry/spring/boot/SentryProperties.java @@ -104,7 +104,7 @@ public static class Logging { private boolean enabled = true; /** Enable/Disable Sentry Logs capture from the auto-configured appender. */ - private boolean enableLogs = false; + private boolean logsEnabled = false; /** Minimum logging level for recording breadcrumbs. */ private @Nullable Level minimumBreadcrumbLevel; @@ -126,12 +126,12 @@ public void setEnabled(boolean enabled) { this.enabled = enabled; } - public boolean isEnableLogs() { - return enableLogs; + public boolean getLogsEnabled() { + return logsEnabled; } - public void setEnableLogs(boolean enableLogs) { - this.enableLogs = enableLogs; + public void setLogsEnabled(boolean logsEnabled) { + this.logsEnabled = logsEnabled; } public @Nullable Level getMinimumBreadcrumbLevel() { diff --git a/sentry-spring-boot/src/test/kotlin/io/sentry/spring/boot/SentryAutoConfigurationTest.kt b/sentry-spring-boot/src/test/kotlin/io/sentry/spring/boot/SentryAutoConfigurationTest.kt index bdc166c15e3..d7e8ffd69e4 100644 --- a/sentry-spring-boot/src/test/kotlin/io/sentry/spring/boot/SentryAutoConfigurationTest.kt +++ b/sentry-spring-boot/src/test/kotlin/io/sentry/spring/boot/SentryAutoConfigurationTest.kt @@ -244,7 +244,7 @@ class SentryAutoConfigurationTest { "sentry.cron.default-timezone=America/New_York", "sentry.cron.default-failure-issue-threshold=40", "sentry.cron.default-recovery-threshold=50", - "sentry.logging.enable-logs=true", + "sentry.logging.logs-enabled=true", "sentry.profile-session-sample-rate=1.0", "sentry.profiling-traces-dir-path=tmp/sentry/profiling-traces", "sentry.profile-lifecycle=TRACE", @@ -303,7 +303,7 @@ class SentryAutoConfigurationTest { assertThat(options.cron!!.defaultTimezone).isEqualTo("America/New_York") assertThat(options.cron!!.defaultFailureIssueThreshold).isEqualTo(40L) assertThat(options.cron!!.defaultRecoveryThreshold).isEqualTo(50L) - assertThat(options.logging.isEnableLogs).isTrue() + assertThat(options.logging.logsEnabled).isTrue() assertThat(options.profileSessionSampleRate).isEqualTo(1.0) assertThat(options.profilingTracesDirPath) .startsWith(File("tmp/sentry/profiling-traces").absolutePath) diff --git a/sentry-spring-boot/src/test/kotlin/io/sentry/spring/boot/SentryLogbackAppenderAutoConfigurationTest.kt b/sentry-spring-boot/src/test/kotlin/io/sentry/spring/boot/SentryLogbackAppenderAutoConfigurationTest.kt index 6117ccf3f8d..f6f24bf67ac 100644 --- a/sentry-spring-boot/src/test/kotlin/io/sentry/spring/boot/SentryLogbackAppenderAutoConfigurationTest.kt +++ b/sentry-spring-boot/src/test/kotlin/io/sentry/spring/boot/SentryLogbackAppenderAutoConfigurationTest.kt @@ -112,7 +112,7 @@ class SentryLogbackAppenderAutoConfigurationTest { "sentry.logging.minimum-event-level=info", "sentry.logging.minimum-breadcrumb-level=debug", "sentry.logging.minimum-level=error", - "sentry.logging.enable-logs=true", + "sentry.logging.logs-enabled=true", ) .run { val appenders = rootLogger.getAppenders(SentryAppender::class.java) @@ -122,7 +122,7 @@ class SentryLogbackAppenderAutoConfigurationTest { assertThat(sentryAppender.minimumBreadcrumbLevel).isEqualTo(Level.DEBUG) assertThat(sentryAppender.minimumEventLevel).isEqualTo(Level.INFO) assertThat(sentryAppender.minimumLevel).isEqualTo(Level.ERROR) - assertThat(sentryAppender.isEnableLogs).isTrue() + assertThat(sentryAppender.logsEnabled).isTrue() } } @@ -131,7 +131,7 @@ class SentryLogbackAppenderAutoConfigurationTest { dsnEnabledRunner.run { val sentryAppender = rootLogger.getAppenders(SentryAppender::class.java).single() - assertThat((sentryAppender as SentryAppender).isEnableLogs).isFalse() + assertThat((sentryAppender as SentryAppender).logsEnabled).isFalse() } }