Skip to content

Commit 8f72f03

Browse files
committed
Merge pull request #42986 from nosan
* pr/42986: Remove explicit '.xml' suffix check from `LogbackLoggingSystem` Closes gh-42986
2 parents 202db9b + 7d8cb5f commit 8f72f03

File tree

3 files changed

+27
-11
lines changed

3 files changed

+27
-11
lines changed

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/logback/LogbackLoggingSystem.java

+4-9
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2023 the original author or authors.
2+
* Copyright 2012-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -281,14 +281,9 @@ private void reportConfigurationErrorsIfNecessary(LoggerContext loggerContext) {
281281

282282
private void configureByResourceUrl(LoggingInitializationContext initializationContext, LoggerContext loggerContext,
283283
URL url) throws JoranException {
284-
if (url.getPath().endsWith(".xml")) {
285-
JoranConfigurator configurator = new SpringBootJoranConfigurator(initializationContext);
286-
configurator.setContext(loggerContext);
287-
configurator.doConfigure(url);
288-
}
289-
else {
290-
throw new IllegalArgumentException("Unsupported file extension in '" + url + "'. Only .xml is supported");
291-
}
284+
JoranConfigurator configurator = new SpringBootJoranConfigurator(initializationContext);
285+
configurator.setContext(loggerContext);
286+
configurator.doConfigure(url);
292287
}
293288

294289
private void stopAndReset(LoggerContext loggerContext) {

spring-boot-project/spring-boot/src/test/java/org/springframework/boot/logging/logback/LogbackLoggingSystemTests.java

+12-2
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import ch.qos.logback.classic.spi.LoggerContextListener;
3838
import ch.qos.logback.core.ConsoleAppender;
3939
import ch.qos.logback.core.encoder.LayoutWrappingEncoder;
40+
import ch.qos.logback.core.joran.spi.JoranException;
4041
import ch.qos.logback.core.rolling.RollingFileAppender;
4142
import ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy;
4243
import ch.qos.logback.core.util.DynamicClassLoadingException;
@@ -832,8 +833,17 @@ void whenConfigLocationIsNotXmlThenIllegalArgumentExceptionShouldBeThrown() {
832833
assertThatIllegalStateException()
833834
.isThrownBy(() -> initialize(this.initializationContext, "classpath:logback-invalid-format.txt",
834835
getLogFile(tmpDir() + "/tmp.log", null)))
835-
.satisfies((ex) -> assertThat(ex.getCause()).isInstanceOf(IllegalArgumentException.class)
836-
.hasMessageStartingWith("Unsupported file extension"));
836+
.satisfies((ex) -> assertThat(ex.getCause()).isInstanceOf(JoranException.class)
837+
.hasMessageStartingWith("Problem parsing XML document. See previously reported errors"));
838+
}
839+
840+
@Test
841+
void whenConfigLocationIsXmlFileWithoutExtensionShouldWork(CapturedOutput output) {
842+
this.loggingSystem.beforeInitialize();
843+
initialize(this.initializationContext, "classpath:logback-without-extension",
844+
getLogFile(tmpDir() + "/tmp.log", null));
845+
this.logger.info("No extension and works!");
846+
assertThat(output.toString()).contains("No extension and works!");
837847
}
838848

839849
@Test
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<configuration>
3+
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
4+
<encoder>
5+
<pattern>%msg</pattern>
6+
</encoder>
7+
</appender>
8+
<root level="INFO">
9+
<appender-ref ref="CONSOLE" />
10+
</root>
11+
</configuration>

0 commit comments

Comments
 (0)