diff --git a/docs/src/main/asciidoc/logging-sentry.adoc b/docs/src/main/asciidoc/logging-sentry.adoc index 33eaf588b86ee..f6475be0da5b1 100644 --- a/docs/src/main/asciidoc/logging-sentry.adoc +++ b/docs/src/main/asciidoc/logging-sentry.adoc @@ -44,13 +44,30 @@ application POM as the following snippet illustrates. ---- +[id="in-app-packages"] +=== “In Application” Stack Frames +Sentry differentiates stack frames that are directly related to your application (“in application”) from stack frames that come from other packages such as the standard library, frameworks, or other dependencies. The difference is visible in the Sentry web interface where only the “in application” frames are displayed by default. + +You can configure which package prefixes your application uses with the stacktrace.app.packages option, which takes a comma separated list. +[source, properties] +---- +quarkus.log.sentry.in-app-packages=com.mycompany,com.other.name +---- +If you don’t want to use this feature but want to disable the warning, simply set it to "*": + +[source, properties] +---- +quarkus.log.sentry.in-app-packages=* +---- + == Example .All errors and warnings occuring in any the packages will be sent to Sentry with DSN `https://abcd@sentry.io/1234` [source, properties] ----- +` quarkus.log.sentry=true quarkus.log.sentry.dsn=https://abcd@sentry.io/1234 +quarkus.log.sentry.in-app-packages=* ---- .All errors occuring in the package `org.example` will be sent to Sentry with DSN `https://abcd@sentry.io/1234` diff --git a/extensions/logging-sentry/deployment/src/test/resources/application-sentry-logger-default.properties b/extensions/logging-sentry/deployment/src/test/resources/application-sentry-logger-default.properties index 1ead8dc2a6294..cf1755dd7a2de 100644 --- a/extensions/logging-sentry/deployment/src/test/resources/application-sentry-logger-default.properties +++ b/extensions/logging-sentry/deployment/src/test/resources/application-sentry-logger-default.properties @@ -1,2 +1,3 @@ quarkus.log.sentry=true -quarkus.log.sentry.dsn=https://123@test.io/22222 \ No newline at end of file +quarkus.log.sentry.dsn=https://123@test.io/22222 +quarkus.log.sentry.in-app-packages=* \ No newline at end of file diff --git a/extensions/logging-sentry/runtime/src/main/java/io/quarkus/logging/sentry/SentryConfig.java b/extensions/logging-sentry/runtime/src/main/java/io/quarkus/logging/sentry/SentryConfig.java index fb70a20f78819..0ecbfa9905129 100644 --- a/extensions/logging-sentry/runtime/src/main/java/io/quarkus/logging/sentry/SentryConfig.java +++ b/extensions/logging-sentry/runtime/src/main/java/io/quarkus/logging/sentry/SentryConfig.java @@ -43,7 +43,7 @@ public class SentryConfig { * You can configure which package prefixes your application uses with this option. * * This option is highly recommended as it affects stacktrace grouping and display on Sentry. See documentation: - * https://docs.sentry.io/clients/java/config/#in-application-stack-frames + * https://quarkus.io/guides/logging-sentry#in-app-packages */ @ConfigItem public Optional> inAppPackages; diff --git a/extensions/logging-sentry/runtime/src/main/java/io/quarkus/logging/sentry/SentryConfigProvider.java b/extensions/logging-sentry/runtime/src/main/java/io/quarkus/logging/sentry/SentryConfigProvider.java index 17b854eaafa45..5a3f8b39c1619 100644 --- a/extensions/logging-sentry/runtime/src/main/java/io/quarkus/logging/sentry/SentryConfigProvider.java +++ b/extensions/logging-sentry/runtime/src/main/java/io/quarkus/logging/sentry/SentryConfigProvider.java @@ -2,6 +2,8 @@ import static java.lang.String.join; +import java.util.Objects; + import io.sentry.DefaultSentryClientFactory; import io.sentry.config.provider.ConfigurationProvider; @@ -20,7 +22,9 @@ class SentryConfigProvider implements ConfigurationProvider { public String getProperty(String key) { switch (key) { case DefaultSentryClientFactory.IN_APP_FRAMES_OPTION: - return config.inAppPackages.map(p -> join(",", p)).orElse(""); + return config.inAppPackages.map(p -> join(",", p)) + .filter(s -> !Objects.equals(s, "*")) + .orElse(""); // New SentryConfig options should be mapped here default: return null; diff --git a/extensions/logging-sentry/runtime/src/main/java/io/quarkus/logging/sentry/SentryHandlerValueFactory.java b/extensions/logging-sentry/runtime/src/main/java/io/quarkus/logging/sentry/SentryHandlerValueFactory.java index f415ae7820f62..14b0eac807988 100644 --- a/extensions/logging-sentry/runtime/src/main/java/io/quarkus/logging/sentry/SentryHandlerValueFactory.java +++ b/extensions/logging-sentry/runtime/src/main/java/io/quarkus/logging/sentry/SentryHandlerValueFactory.java @@ -22,7 +22,7 @@ public RuntimeValue> create(final SentryConfig config) { } if (!config.inAppPackages.isPresent()) { LOG.warn( - "No 'quarkus.sentry.in-app-packages' was configured, this option is highly recommended as it affects stacktrace grouping and display on Sentry."); + "No 'quarkus.sentry.in-app-packages' was configured, this option is highly recommended as it affects stacktrace grouping and display on Sentry. See https://quarkus.io/guides/logging-sentry#in-app-packages"); } final SentryConfigProvider provider = new SentryConfigProvider(config); Sentry.init(SentryOptions.from(new Lookup(provider, provider), config.dsn));