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