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 f62a040a49..6c7bfa4464 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 @@ -246,7 +246,7 @@ public class LoggingApplicationListener implements SmartApplicationListener { name = null; } level = environment.resolvePlaceholders(level); - system.setLogLevel(name, LogLevel.valueOf(level)); + system.setLogLevel(name, LogLevel.valueOf(level.toUpperCase())); } catch (RuntimeException ex) { this.logger.error("Cannot set level: " + level + " for '" + name + "'"); 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 d2d1548b13..7eceeb3dbb 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 @@ -210,6 +210,18 @@ public class LoggingApplicationListenerTests { assertThat(this.outputCapture.toString(), containsString("testattrace")); } + @Test + public void parseLevelsCaseInsensitive() throws Exception { + EnvironmentTestUtils.addEnvironment(this.context, + "logging.level.org.springframework.boot=TrAcE"); + this.initializer.initialize(this.context.getEnvironment(), + this.context.getClassLoader()); + this.logger.debug("testatdebug"); + this.logger.trace("testattrace"); + assertThat(this.outputCapture.toString(), containsString("testatdebug")); + assertThat(this.outputCapture.toString(), containsString("testattrace")); + } + @Test public void parseLevelsWithPlaceholder() throws Exception { EnvironmentTestUtils.addEnvironment(this.context, "foo=TRACE",