diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/logging/LoggingApplicationListener.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/logging/LoggingApplicationListener.java index d2b6a987c4..27b1a5fea2 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/logging/LoggingApplicationListener.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/logging/LoggingApplicationListener.java @@ -16,6 +16,7 @@ package org.springframework.boot.context.logging; +import java.io.FileNotFoundException; import java.util.Collections; import java.util.List; import java.util.Map; @@ -53,7 +54,6 @@ import org.springframework.core.env.Environment; import org.springframework.core.log.LogMessage; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; -import org.springframework.util.ResourceUtils; import org.springframework.util.StringUtils; /** @@ -307,13 +307,17 @@ public class LoggingApplicationListener implements GenericApplicationListener { } else { try { - ResourceUtils.getURL(logConfig).openStream().close(); system.initialize(initializationContext, logConfig, logFile); } catch (Exception ex) { + Throwable exceptionToReport = ex; + while (exceptionToReport != null && !(exceptionToReport instanceof FileNotFoundException)) { + exceptionToReport = exceptionToReport.getCause(); + } + exceptionToReport = (exceptionToReport != null) ? exceptionToReport : ex; // NOTE: We can't use the logger here to report the problem System.err.println("Logging system failed to initialize using configuration from '" + logConfig + "'"); - ex.printStackTrace(System.err); + exceptionToReport.printStackTrace(System.err); throw new IllegalStateException(ex); } } diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/logging/LoggingApplicationListenerTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/logging/LoggingApplicationListenerTests.java index 8fbf491f56..c102dd85c0 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/logging/LoggingApplicationListenerTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/logging/LoggingApplicationListenerTests.java @@ -173,9 +173,10 @@ class LoggingApplicationListenerTests { addPropertiesToEnvironment(this.context, "logging.config=doesnotexist.xml"); assertThatIllegalStateException().isThrownBy(() -> { this.initializer.initialize(this.context.getEnvironment(), this.context.getClassLoader()); - assertThat(this.output) - .contains("Logging system failed to initialize using configuration from 'doesnotexist.xml'"); }); + assertThat(this.output) + .contains("Logging system failed to initialize using configuration from 'doesnotexist.xml'") + .doesNotContain("JoranException"); } @Test