LogbackConfigurationTests Class — spring-boot Architecture
Architecture documentation for the LogbackConfigurationTests class in LogbackConfigurationTests.java from the spring-boot codebase.
Entity Profile
Source Code
core/spring-boot/src/test/java/org/springframework/boot/logging/logback/LogbackConfigurationTests.java lines 46–124
class LogbackConfigurationTests {
@Test
@WithResource(name = "custom-console-log-pattern.xml", content = """
<configuration>
<property name="CONSOLE_LOG_PATTERN" value="foo" />
<include resource="org/springframework/boot/logging/logback/base.xml" />
</configuration>
""")
void consolePatternCanBeOverridden(@ResourcesRoot File resourcesRoot) throws JoranException {
JoranConfigurator configurator = new JoranConfigurator();
LoggerContext context = new LoggerContext();
configurator.setContext(context);
configurator.doConfigure(new File(resourcesRoot, "custom-console-log-pattern.xml"));
Appender<ILoggingEvent> appender = context.getLogger("ROOT").getAppender("CONSOLE");
assertThat(appender).isInstanceOf(ConsoleAppender.class);
Encoder<?> encoder = ((ConsoleAppender<?>) appender).getEncoder();
assertThat(encoder).isInstanceOf(PatternLayoutEncoder.class);
assertThat(((PatternLayoutEncoder) encoder).getPattern()).isEqualTo("foo");
}
@Test
@WithResource(name = "custom-file-log-pattern.xml", content = """
<configuration>
<property name="FILE_LOG_PATTERN" value="bar" />
<include resource="org/springframework/boot/logging/logback/base.xml" />
</configuration>
""")
void filePatternCanBeOverridden(@ResourcesRoot File resourcesRoot) throws JoranException {
JoranConfigurator configurator = new JoranConfigurator();
LoggerContext context = new LoggerContext();
configurator.setContext(context);
configurator.doConfigure(new File(resourcesRoot, "custom-file-log-pattern.xml"));
Appender<ILoggingEvent> appender = context.getLogger("ROOT").getAppender("FILE");
assertThat(appender).isInstanceOf(FileAppender.class);
Encoder<?> encoder = ((FileAppender<?>) appender).getEncoder();
assertThat(encoder).isInstanceOf(PatternLayoutEncoder.class);
assertThat(((PatternLayoutEncoder) encoder).getPattern()).isEqualTo("bar");
}
@Test
@WithResource(name = "custom-file-log-pattern.xml", content = """
<configuration>
<property name="FILE_LOG_PATTERN" value="bar" />
<include resource="org/springframework/boot/logging/logback/base.xml" />
</configuration>
""")
void defaultRollingFileNamePattern(@ResourcesRoot File resourcesRoot) throws JoranException {
JoranConfigurator configurator = new JoranConfigurator();
LoggerContext context = new LoggerContext();
configurator.setContext(context);
configurator.doConfigure(new File(resourcesRoot, "custom-file-log-pattern.xml"));
Appender<ILoggingEvent> appender = context.getLogger("ROOT").getAppender("FILE");
assertThat(appender).isInstanceOf(RollingFileAppender.class);
RollingPolicy rollingPolicy = ((RollingFileAppender<?>) appender).getRollingPolicy();
String fileNamePattern = ((SizeAndTimeBasedRollingPolicy<?>) rollingPolicy).getFileNamePattern();
assertThat(fileNamePattern).endsWith("spring.log.%d{yyyy-MM-dd}.%i.gz");
}
@Test
@WithResource(name = "custom-file-log-pattern-with-fileNamePattern.xml", content = """
<configuration>
<property name="LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN" value="my.log.%d{yyyyMMdd}.%i.gz"/>
<include resource="org/springframework/boot/logging/logback/base.xml" />
</configuration>
""")
void customRollingFileNamePattern(@ResourcesRoot File resourcesRoot) throws JoranException {
JoranConfigurator configurator = new JoranConfigurator();
LoggerContext context = new LoggerContext();
configurator.setContext(context);
configurator.doConfigure(new File(resourcesRoot, "custom-file-log-pattern-with-fileNamePattern.xml"));
Appender<ILoggingEvent> appender = context.getLogger("ROOT").getAppender("FILE");
assertThat(appender).isInstanceOf(RollingFileAppender.class);
RollingPolicy rollingPolicy = ((RollingFileAppender<?>) appender).getRollingPolicy();
String fileNamePattern = ((SizeAndTimeBasedRollingPolicy<?>) rollingPolicy).getFileNamePattern();
assertThat(fileNamePattern).endsWith("my.log.%d{yyyyMMdd}.%i.gz");
}
}
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free