Skip to content

Commit 8489642

Browse files
authored
Allow configuration of Sentry Logs for Spring Boot Logback (#4508)
* Add user id, username and email to log attributes * wip * Check log event count before sending envelope * changelog * Min event level config option; enable logs in logback sample * Flush logs when client flushes * Improve log flushing and add test * review feedback * Add logs to Spring Boot logback config * treat unformatted message and params as pii if logback encoder is present * add tests for pii handling * adapt pervious changelog entry
1 parent 9f37401 commit 8489642

File tree

9 files changed

+45
-4
lines changed

9 files changed

+45
-4
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@
3636
<minimumLevel>INFO</minimumLevel>
3737
</appender>
3838
```
39+
- For Spring Boot you may also enable it in `application.properties` / `application.yml`:
40+
```properties
41+
sentry.logs.enabled=true
42+
sentry.logging.minimum-level=error
43+
```
3944
- If you manually initialize Sentry, you may also enable logs on `Sentry.init`:
4045
```java
4146
Sentry.init(options -> {

sentry-spring-boot-jakarta/api/sentry-spring-boot-jakarta.api

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,13 @@ public class io/sentry/spring/boot/jakarta/SentryProperties$Logging {
5555
public fun getLoggers ()Ljava/util/List;
5656
public fun getMinimumBreadcrumbLevel ()Lorg/slf4j/event/Level;
5757
public fun getMinimumEventLevel ()Lorg/slf4j/event/Level;
58+
public fun getMinimumLevel ()Lorg/slf4j/event/Level;
5859
public fun isEnabled ()Z
5960
public fun setEnabled (Z)V
6061
public fun setLoggers (Ljava/util/List;)V
6162
public fun setMinimumBreadcrumbLevel (Lorg/slf4j/event/Level;)V
6263
public fun setMinimumEventLevel (Lorg/slf4j/event/Level;)V
64+
public fun setMinimumLevel (Lorg/slf4j/event/Level;)V
6365
}
6466

6567
public class io/sentry/spring/boot/jakarta/SentryProperties$Reactive {

sentry-spring-boot-jakarta/src/main/java/io/sentry/spring/boot/jakarta/SentryLogbackInitializer.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ public void onApplicationEvent(final @NotNull ApplicationEvent event) {
5151
Optional.ofNullable(sentryProperties.getLogging().getMinimumEventLevel())
5252
.map(slf4jLevel -> Level.toLevel(slf4jLevel.name()))
5353
.ifPresent(sentryAppender::setMinimumEventLevel);
54+
Optional.ofNullable(sentryProperties.getLogging().getMinimumLevel())
55+
.map(slf4jLevel -> Level.toLevel(slf4jLevel.name()))
56+
.ifPresent(sentryAppender::setMinimumLevel);
5457

5558
sentryAppender.start();
5659
logger.addAppender(sentryAppender);

sentry-spring-boot-jakarta/src/main/java/io/sentry/spring/boot/jakarta/SentryProperties.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,12 +129,15 @@ public static class Logging {
129129
/** Enable/Disable logging auto-configuration. */
130130
private boolean enabled = true;
131131

132-
/** Minimum logging level for recording breadcrumb. */
132+
/** Minimum logging level for recording breadcrumbs. */
133133
private @Nullable Level minimumBreadcrumbLevel;
134134

135-
/** Minimum logging level for recording event. */
135+
/** Minimum logging level for recording events. */
136136
private @Nullable Level minimumEventLevel;
137137

138+
/** Minimum logging level for recording log events. */
139+
private @Nullable Level minimumLevel;
140+
138141
/** List of loggers the SentryAppender should be added to. */
139142
private @NotNull List<String> loggers = Arrays.asList(org.slf4j.Logger.ROOT_LOGGER_NAME);
140143

@@ -162,6 +165,14 @@ public void setMinimumEventLevel(@Nullable Level minimumEventLevel) {
162165
this.minimumEventLevel = minimumEventLevel;
163166
}
164167

168+
public @Nullable Level getMinimumLevel() {
169+
return minimumLevel;
170+
}
171+
172+
public void setMinimumLevel(@Nullable Level minimumLevel) {
173+
this.minimumLevel = minimumLevel;
174+
}
175+
165176
@NotNull
166177
public List<String> getLoggers() {
167178
return loggers;

sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/SentryLogbackAppenderAutoConfigurationTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ class SentryLogbackAppenderAutoConfigurationTest {
8484
"sentry.dsn=http://key@localhost/proj",
8585
"sentry.logging.minimum-event-level=info",
8686
"sentry.logging.minimum-breadcrumb-level=debug",
87+
"sentry.logging.minimum-level=error",
8788
)
8889
.run {
8990
val appenders = rootLogger.getAppenders(SentryAppender::class.java)
@@ -92,6 +93,7 @@ class SentryLogbackAppenderAutoConfigurationTest {
9293

9394
assertThat(sentryAppender.minimumBreadcrumbLevel).isEqualTo(Level.DEBUG)
9495
assertThat(sentryAppender.minimumEventLevel).isEqualTo(Level.INFO)
96+
assertThat(sentryAppender.minimumLevel).isEqualTo(Level.ERROR)
9597
}
9698
}
9799

sentry-spring-boot/api/sentry-spring-boot.api

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,13 @@ public class io/sentry/spring/boot/SentryProperties$Logging {
5151
public fun getLoggers ()Ljava/util/List;
5252
public fun getMinimumBreadcrumbLevel ()Lorg/slf4j/event/Level;
5353
public fun getMinimumEventLevel ()Lorg/slf4j/event/Level;
54+
public fun getMinimumLevel ()Lorg/slf4j/event/Level;
5455
public fun isEnabled ()Z
5556
public fun setEnabled (Z)V
5657
public fun setLoggers (Ljava/util/List;)V
5758
public fun setMinimumBreadcrumbLevel (Lorg/slf4j/event/Level;)V
5859
public fun setMinimumEventLevel (Lorg/slf4j/event/Level;)V
60+
public fun setMinimumLevel (Lorg/slf4j/event/Level;)V
5961
}
6062

6163
public class io/sentry/spring/boot/SentryWebfluxAutoConfiguration {

sentry-spring-boot/src/main/java/io/sentry/spring/boot/SentryLogbackInitializer.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ public void onApplicationEvent(final @NotNull ApplicationEvent event) {
5151
Optional.ofNullable(sentryProperties.getLogging().getMinimumEventLevel())
5252
.map(slf4jLevel -> Level.toLevel(slf4jLevel.name()))
5353
.ifPresent(sentryAppender::setMinimumEventLevel);
54+
Optional.ofNullable(sentryProperties.getLogging().getMinimumLevel())
55+
.map(slf4jLevel -> Level.toLevel(slf4jLevel.name()))
56+
.ifPresent(sentryAppender::setMinimumLevel);
5457

5558
sentryAppender.start();
5659
logger.addAppender(sentryAppender);

sentry-spring-boot/src/main/java/io/sentry/spring/boot/SentryProperties.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,12 +103,15 @@ public static class Logging {
103103
/** Enable/Disable logging auto-configuration. */
104104
private boolean enabled = true;
105105

106-
/** Minimum logging level for recording breadcrumb. */
106+
/** Minimum logging level for recording breadcrumbs. */
107107
private @Nullable Level minimumBreadcrumbLevel;
108108

109-
/** Minimum logging level for recording event. */
109+
/** Minimum logging level for recording events. */
110110
private @Nullable Level minimumEventLevel;
111111

112+
/** Minimum logging level for recording log events. */
113+
private @Nullable Level minimumLevel;
114+
112115
/** List of loggers the SentryAppender should be added to. */
113116
private @NotNull List<String> loggers = Arrays.asList(org.slf4j.Logger.ROOT_LOGGER_NAME);
114117

@@ -136,6 +139,14 @@ public void setMinimumEventLevel(@Nullable Level minimumEventLevel) {
136139
this.minimumEventLevel = minimumEventLevel;
137140
}
138141

142+
public @Nullable Level getMinimumLevel() {
143+
return minimumLevel;
144+
}
145+
146+
public void setMinimumLevel(@Nullable Level minimumLevel) {
147+
this.minimumLevel = minimumLevel;
148+
}
149+
139150
@NotNull
140151
public List<String> getLoggers() {
141152
return loggers;

sentry-spring-boot/src/test/kotlin/io/sentry/spring/boot/SentryLogbackAppenderAutoConfigurationTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ class SentryLogbackAppenderAutoConfigurationTest {
8484
"sentry.dsn=http://key@localhost/proj",
8585
"sentry.logging.minimum-event-level=info",
8686
"sentry.logging.minimum-breadcrumb-level=debug",
87+
"sentry.logging.minimum-level=error",
8788
)
8889
.run {
8990
val appenders = rootLogger.getAppenders(SentryAppender::class.java)
@@ -92,6 +93,7 @@ class SentryLogbackAppenderAutoConfigurationTest {
9293

9394
assertThat(sentryAppender.minimumBreadcrumbLevel).isEqualTo(Level.DEBUG)
9495
assertThat(sentryAppender.minimumEventLevel).isEqualTo(Level.INFO)
96+
assertThat(sentryAppender.minimumLevel).isEqualTo(Level.ERROR)
9597
}
9698
}
9799

0 commit comments

Comments
 (0)