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 ac2854b9dd..8ba14af1be 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 @@ -1,5 +1,5 @@ /* - * Copyright 2012-2018 the original author or authors. + * Copyright 2012-2019 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,6 +21,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.Optional; import java.util.concurrent.atomic.AtomicBoolean; import org.apache.commons.logging.Log; @@ -320,12 +321,11 @@ public class LoggingApplicationListener implements GenericApplicationListener { } protected void initializeLogLevel(LoggingSystem system, LogLevel level) { - List loggers = LOG_LEVEL_LOGGERS.get(level); - if (loggers != null) { - for (String logger : loggers) { - system.setLogLevel(logger, level); - } - } + Optional.ofNullable(LOG_LEVEL_LOGGERS.get(level)).orElse(Collections.emptyList()) + .stream() + .flatMap((logger) -> DEFAULT_GROUP_LOGGERS + .getOrDefault(logger, Collections.singletonList(logger)).stream()) + .forEach((logger) -> system.setLogLevel(logger, level)); } protected void setLogLevels(LoggingSystem system, Environment environment) { 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 8f5cafa3ac..03627fb478 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 @@ -1,5 +1,5 @@ /* - * Copyright 2012-2018 the original author or authors. + * Copyright 2012-2019 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -262,6 +262,21 @@ public class LoggingApplicationListenerTests { assertThat(this.outputCapture.toString()).doesNotContain("testattrace"); } + @Test + public void parseDebugArgExpandGroups() { + addPropertiesToEnvironment(this.context, "debug"); + this.initializer.initialize(this.context.getEnvironment(), + this.context.getClassLoader()); + ch.qos.logback.classic.Logger sqlGroup = this.loggerContext + .getLogger("org.hibernate.SQL"); + ch.qos.logback.classic.Logger webGroup = this.loggerContext + .getLogger("org.springframework.boot.actuate.endpoint.web"); + webGroup.debug("testdebugwebgroup"); + sqlGroup.debug("testdebugsqlgroup"); + assertThat(this.outputCapture.toString()).contains("testdebugwebgroup"); + assertThat(this.outputCapture.toString()).contains("testdebugsqlgroup"); + } + @Test public void parseTraceArg() { TestPropertySourceUtils.addInlinedPropertiesToEnvironment(this.context, "trace");