Start Threshold filters in DefaultLogbackConfiguration

Closes gh-36741
3.1.x
Moritz Halbritter 1 year ago
parent 5d120faac2
commit af244e1550

@ -100,6 +100,7 @@ class DefaultLogbackConfiguration {
ConsoleAppender<ILoggingEvent> 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}"));
@ -114,6 +115,7 @@ class DefaultLogbackConfiguration {
RollingFileAppender<ILoggingEvent> 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}"));

@ -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;
@ -87,6 +88,7 @@ import static org.mockito.Mockito.times;
* @author Robert Thornton
* @author Eddú Meléndez
* @author Scott Frederick
* @author Moritz Halbritter
*/
@ExtendWith(OutputCaptureExtension.class)
class LogbackLoggingSystemTests extends AbstractLoggingSystemTests {
@ -706,6 +708,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.initialize(context, configLocation, logFile);

Loading…
Cancel
Save