Make sure logback console output happens early in lifecycle
The problem was that the basic-logback.xml was valid configuration but not in a <configuration> tag, so it wasn't valid on its own. This change fixes that. Fixes gh-585
This commit is contained in:
parent
d7948112b4
commit
bae26e2c07
|
@ -22,6 +22,8 @@ import java.util.HashSet;
|
|||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.springframework.core.env.MutablePropertySources;
|
||||
import org.springframework.core.env.PropertySource;
|
||||
import org.springframework.core.io.Resource;
|
||||
|
@ -37,6 +39,8 @@ import org.springframework.util.StringUtils;
|
|||
*/
|
||||
public class PropertySourcesLoader {
|
||||
|
||||
private static Log logger = LogFactory.getLog(PropertySourcesLoader.class);
|
||||
|
||||
private final MutablePropertySources propertySources;
|
||||
|
||||
private final List<PropertySourceLoader> loaders;
|
||||
|
@ -164,6 +168,7 @@ public class PropertySourcesLoader {
|
|||
|
||||
EnumerableCompositePropertySource group = getGeneric(basename);
|
||||
group.add(source);
|
||||
logger.info("Adding PropertySource: " + source + " in group: " + basename);
|
||||
if (this.propertySources.contains(group.getName())) {
|
||||
this.propertySources.replace(group.getName(), group);
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<included>
|
||||
|
||||
<include resource="org/springframework/boot/logging/logback/basic-logback.xml"/>
|
||||
<include resource="org/springframework/boot/logging/logback/basic.xml"/>
|
||||
|
||||
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${java.io.tmpdir:-/tmp}/}spring.log}"/>
|
||||
<property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } [%t] --- %-40.40logger{39} : %m%n%wex"/>
|
||||
|
|
|
@ -1,31 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<included>
|
||||
<property name="CONSOLE_LOG_PATTERN" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t{14}]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wex"/>
|
||||
|
||||
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
|
||||
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
|
||||
|
||||
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<appender name="DEBUG_LEVEL_REMAPPER" class="org.springframework.boot.logging.logback.LevelRemappingAppender">
|
||||
<destinationLogger>org.springframework.boot</destinationLogger>
|
||||
</appender>
|
||||
|
||||
<root level="INFO">
|
||||
<appender-ref ref="CONSOLE" />
|
||||
</root>
|
||||
|
||||
<logger name="org.hibernate.validator.internal.util.Version" level="WARN"/>
|
||||
<logger name="org.apache.coyote.http11.Http11NioProtocol" level="WARN"/>
|
||||
<logger name="org.crsh.plugin" level="WARN"/>
|
||||
<logger name="org.apache.tomcat.util.net.NioSelectorPool" level="WARN"/>
|
||||
<logger name="org.apache.catalina.startup.DigesterFactory" level="ERROR"/>
|
||||
<logger name="org.thymeleaf" additivity="false">
|
||||
<appender-ref ref="DEBUG_LEVEL_REMAPPER"/>
|
||||
</logger>
|
||||
|
||||
</included>
|
||||
<configuration>
|
||||
<include resource="org/springframework/boot/logging/logback/basic.xml" />
|
||||
</configuration>
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<included>
|
||||
<property name="CONSOLE_LOG_PATTERN" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t{14}]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wex"/>
|
||||
|
||||
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
|
||||
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
|
||||
|
||||
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<appender name="DEBUG_LEVEL_REMAPPER" class="org.springframework.boot.logging.logback.LevelRemappingAppender">
|
||||
<destinationLogger>org.springframework.boot</destinationLogger>
|
||||
</appender>
|
||||
|
||||
<root level="INFO">
|
||||
<appender-ref ref="CONSOLE" />
|
||||
</root>
|
||||
|
||||
<logger name="org.hibernate.validator.internal.util.Version" level="WARN"/>
|
||||
<logger name="org.apache.coyote.http11.Http11NioProtocol" level="WARN"/>
|
||||
<logger name="org.crsh.plugin" level="WARN"/>
|
||||
<logger name="org.apache.tomcat.util.net.NioSelectorPool" level="WARN"/>
|
||||
<logger name="org.apache.catalina.startup.DigesterFactory" level="ERROR"/>
|
||||
<logger name="org.thymeleaf" additivity="false">
|
||||
<appender-ref ref="DEBUG_LEVEL_REMAPPER"/>
|
||||
</logger>
|
||||
|
||||
</included>
|
|
@ -24,12 +24,18 @@ import org.junit.After;
|
|||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.slf4j.ILoggerFactory;
|
||||
import org.slf4j.impl.StaticLoggerBinder;
|
||||
import org.springframework.boot.logging.LogLevel;
|
||||
import org.springframework.boot.test.OutputCapture;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import ch.qos.logback.classic.Logger;
|
||||
import ch.qos.logback.classic.LoggerContext;
|
||||
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertThat;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
|
@ -65,6 +71,15 @@ public class LogbackLoggingSystemTests {
|
|||
System.clearProperty("PID");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBasicConfigLocation() throws Exception {
|
||||
this.loggingSystem.beforeInitialize();
|
||||
ILoggerFactory factory = StaticLoggerBinder.getSingleton().getLoggerFactory();
|
||||
LoggerContext context = (LoggerContext) factory;
|
||||
Logger root = context.getLogger(Logger.ROOT_LOGGER_NAME);
|
||||
assertNotNull(root.getAppender("CONSOLE"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNonDefaultConfigLocation() throws Exception {
|
||||
this.loggingSystem.beforeInitialize();
|
||||
|
|
Loading…
Reference in New Issue