Make ROOT logger name case-insensitive when setting log level
Fixes gh-9693
This commit is contained in:
parent
96b1a8547f
commit
222a09cfd3
|
@ -341,17 +341,23 @@ public class LoggingApplicationListener implements GenericApplicationListener {
|
|||
protected void setLogLevels(LoggingSystem system, Environment environment) {
|
||||
Map<String, Object> levels = new RelaxedPropertyResolver(environment)
|
||||
.getSubProperties("logging.level.");
|
||||
boolean rootProcessed = false;
|
||||
for (Entry<String, Object> entry : levels.entrySet()) {
|
||||
setLogLevel(system, environment, entry.getKey(), entry.getValue().toString());
|
||||
String name = entry.getKey();
|
||||
if (name.equalsIgnoreCase(LoggingSystem.ROOT_LOGGER_NAME)) {
|
||||
if (rootProcessed) {
|
||||
return;
|
||||
}
|
||||
name = null;
|
||||
rootProcessed = true;
|
||||
}
|
||||
setLogLevel(system, environment, name, entry.getValue().toString());
|
||||
}
|
||||
}
|
||||
|
||||
private void setLogLevel(LoggingSystem system, Environment environment, String name,
|
||||
String level) {
|
||||
try {
|
||||
if (name.equalsIgnoreCase(LoggingSystem.ROOT_LOGGER_NAME)) {
|
||||
name = null;
|
||||
}
|
||||
level = environment.resolvePlaceholders(level);
|
||||
system.setLogLevel(name, coerceLogLevel(level));
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ package org.springframework.boot.logging;
|
|||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
@ -47,6 +48,8 @@ import org.springframework.context.ApplicationListener;
|
|||
import org.springframework.context.event.ContextClosedEvent;
|
||||
import org.springframework.context.event.SimpleApplicationEventMulticaster;
|
||||
import org.springframework.context.support.GenericApplicationContext;
|
||||
import org.springframework.core.env.MapPropertySource;
|
||||
import org.springframework.core.env.MutablePropertySources;
|
||||
import org.springframework.test.context.support.TestPropertySourceUtils;
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
|
||||
|
@ -481,6 +484,17 @@ public class LoggingApplicationListenerTests {
|
|||
assertThat(System.getProperty("CONSOLE_LOG_PATTERN")).isEqualTo("console ${pid}");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void lowPriorityPropertySourceShouldNotOverrideRootLoggerConfig() throws Exception {
|
||||
MutablePropertySources propertySources = this.context.getEnvironment().getPropertySources();
|
||||
propertySources.addFirst(new MapPropertySource("test1", Collections.<String, Object>singletonMap("logging.level.ROOT", "DEBUG")));
|
||||
propertySources.addLast(new MapPropertySource("test2", Collections.<String, Object>singletonMap("logging.level.root", "WARN")));
|
||||
this.initializer.initialize(this.context.getEnvironment(),
|
||||
this.context.getClassLoader());
|
||||
this.logger.debug("testatdebug");
|
||||
assertThat(this.outputCapture.toString()).contains("testatdebug");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void logFilePropertiesCanReferenceSystemProperties() {
|
||||
TestPropertySourceUtils.addInlinedPropertiesToEnvironment(this.context,
|
||||
|
|
Loading…
Reference in New Issue