diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/logback/DefaultLogbackConfiguration.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/logback/DefaultLogbackConfiguration.java index 0298aa6325f..dfce5601214 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/logback/DefaultLogbackConfiguration.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/logback/DefaultLogbackConfiguration.java @@ -104,6 +104,7 @@ class DefaultLogbackConfiguration { ConsoleAppender appender = new ConsoleAppender<>(); ThresholdFilter filter = new ThresholdFilter(); filter.setLevel(resolve(config, "${CONSOLE_LOG_THRESHOLD}")); + filter.start(); appender.addFilter(filter); PatternLayoutEncoder encoder = new PatternLayoutEncoder(); encoder.setPattern(resolve(config, "${CONSOLE_LOG_PATTERN}")); @@ -118,6 +119,7 @@ class DefaultLogbackConfiguration { RollingFileAppender appender = new RollingFileAppender<>(); ThresholdFilter filter = new ThresholdFilter(); filter.setLevel(resolve(config, "${FILE_LOG_THRESHOLD}")); + filter.start(); appender.addFilter(filter); PatternLayoutEncoder encoder = new PatternLayoutEncoder(); encoder.setPattern(resolve(config, "${FILE_LOG_PATTERN}")); diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/logging/logback/LogbackLoggingSystemTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/logging/logback/LogbackLoggingSystemTests.java index 55273086b6a..224032be9f2 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/logging/logback/LogbackLoggingSystemTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/logging/logback/LogbackLoggingSystemTests.java @@ -21,6 +21,7 @@ import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; +import java.nio.file.Path; import java.util.Arrays; import java.util.EnumSet; import java.util.HashSet; @@ -90,6 +91,7 @@ import static org.mockito.Mockito.times; * @author EddĂș MelĂ©ndez * @author Scott Frederick * @author Jonatan Ivanov + * @author Moritz Halbritter */ @ExtendWith(OutputCaptureExtension.class) class LogbackLoggingSystemTests extends AbstractLoggingSystemTests { @@ -801,6 +803,29 @@ class LogbackLoggingSystemTests extends AbstractLoggingSystemTests { .satisfies((ex) -> assertThat(ex.getCause()).isNotInstanceOf(IllegalArgumentException.class)); } + @Test + void shouldRespectConsoleThreshold(CapturedOutput output) { + this.environment.setProperty("logging.threshold.console", "warn"); + this.loggingSystem.beforeInitialize(); + initialize(this.initializationContext, null, null); + this.logger.info("Some info message"); + this.logger.warn("Some warn message"); + assertThat(output).doesNotContain("Some info message").contains("Some warn message"); + } + + @Test + void shouldRespectFileThreshold() { + this.environment.setProperty("logging.threshold.file", "warn"); + this.loggingSystem.beforeInitialize(); + initialize(this.initializationContext, null, getLogFile(null, tmpDir())); + this.logger.info("Some info message"); + this.logger.warn("Some warn message"); + Path file = Path.of(tmpDir(), "spring.log"); + assertThat(file).content(StandardCharsets.UTF_8) + .doesNotContain("Some info message") + .contains("Some warn message"); + } + private void initialize(LoggingInitializationContext context, String configLocation, LogFile logFile) { this.loggingSystem.getSystemProperties((ConfigurableEnvironment) context.getEnvironment()).apply(logFile); this.loggingSystem.beforeInitialize();