diff --git a/spring-boot/src/main/java/org/springframework/boot/logging/LoggingApplicationListener.java b/spring-boot/src/main/java/org/springframework/boot/logging/LoggingApplicationListener.java index 25979d15bae..ba80ce09af4 100644 --- a/spring-boot/src/main/java/org/springframework/boot/logging/LoggingApplicationListener.java +++ b/spring-boot/src/main/java/org/springframework/boot/logging/LoggingApplicationListener.java @@ -202,7 +202,10 @@ public class LoggingApplicationListener implements GenericApplicationListener { environment); LogFile logFile = LogFile.get(environment); String logConfig = environment.getProperty(CONFIG_PROPERTY); - if (StringUtils.hasLength(logConfig)) { + if (ignoreLogConfig(logConfig)) { + system.initialize(initializationContext, null, logFile); + } + else { try { ResourceUtils.getURL(logConfig).openStream().close(); system.initialize(initializationContext, logConfig, logFile); @@ -211,13 +214,18 @@ public class LoggingApplicationListener implements GenericApplicationListener { // 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); throw new IllegalStateException(ex); } } - else { - system.initialize(initializationContext, null, logFile); - } + } + + private boolean ignoreLogConfig(String logConfig) { + return !StringUtils.hasLength(logConfig) + || isDefaultAzureLoggingConfig(logConfig); + } + + private boolean isDefaultAzureLoggingConfig(String candidate) { + return candidate.startsWith("-Djava.util.logging.config.file="); } private void initializeFinalLoggingLevels(ConfigurableEnvironment environment, diff --git a/spring-boot/src/test/java/org/springframework/boot/logging/LoggingApplicationListenerTests.java b/spring-boot/src/test/java/org/springframework/boot/logging/LoggingApplicationListenerTests.java index 4e3163040a3..7f6c9c4cdc8 100644 --- a/spring-boot/src/test/java/org/springframework/boot/logging/LoggingApplicationListenerTests.java +++ b/spring-boot/src/test/java/org/springframework/boot/logging/LoggingApplicationListenerTests.java @@ -141,6 +141,21 @@ public class LoggingApplicationListenerTests { this.context.getClassLoader()); } + @Test + public void azureDefaultLoggingConfigDoesNotCauseAFailure() throws Exception { + EnvironmentTestUtils + .addEnvironment( + this.context, + "logging.config: -Djava.util.logging.config.file=\"d:\\home\\site\\wwwroot\\bin\\apache-tomcat-7.0.52\\conf\\logging.properties\""); + this.initializer.initialize(this.context.getEnvironment(), + this.context.getClassLoader()); + this.logger.info("Hello world"); + String output = this.outputCapture.toString().trim(); + assertTrue("Wrong output:\n" + output, output.contains("Hello world")); + assertFalse("Wrong output:\n" + output, output.contains("???")); + assertFalse(new File(tmpDir() + "/spring.log").exists()); + } + @Test public void overrideConfigBroken() throws Exception { EnvironmentTestUtils.addEnvironment(this.context,