Set all documented system properties in LoggingApplicationListener
Closes gh-5073
This commit is contained in:
parent
4cbbd48f18
commit
ddfadce94d
|
@ -109,6 +109,31 @@ public class LoggingApplicationListener implements GenericApplicationListener {
|
|||
*/
|
||||
public static final String EXCEPTION_CONVERSION_WORD = "LOG_EXCEPTION_CONVERSION_WORD";
|
||||
|
||||
/**
|
||||
* The name of the System property that contains the log file.
|
||||
*/
|
||||
public static final String LOG_FILE = "LOG_FILE";
|
||||
|
||||
/**
|
||||
* The name of the System property that contains the log file.
|
||||
*/
|
||||
public static final String LOG_PATH = "LOG_PATH";
|
||||
|
||||
/**
|
||||
* The name of the System property that contains the console log pattern
|
||||
*/
|
||||
public static final String CONSOLE_LOG_PATTERN = "CONSOLE_LOG_PATTERN";
|
||||
|
||||
/**
|
||||
* The name of the System property that contains the file log pattern
|
||||
*/
|
||||
public static final String FILE_LOG_PATTERN = "FILE_LOG_PATTERN";
|
||||
|
||||
/**
|
||||
* The name of the System property that contains the log level pattern
|
||||
*/
|
||||
public static final String LOG_LEVEL_PATTERN = "LOG_LEVEL_PATTERN";
|
||||
|
||||
/**
|
||||
* The name of the {@link LoggingSystem} bean.
|
||||
*/
|
||||
|
@ -222,23 +247,38 @@ public class LoggingApplicationListener implements GenericApplicationListener {
|
|||
*/
|
||||
protected void initialize(ConfigurableEnvironment environment,
|
||||
ClassLoader classLoader) {
|
||||
if (System.getProperty(PID_KEY) == null) {
|
||||
System.setProperty(PID_KEY, new ApplicationPid().toString());
|
||||
}
|
||||
if (System.getProperty(EXCEPTION_CONVERSION_WORD) == null) {
|
||||
System.setProperty(EXCEPTION_CONVERSION_WORD,
|
||||
getExceptionConversionWord(environment));
|
||||
}
|
||||
LogFile logFile = LogFile.get(environment);
|
||||
setSystemProperties(environment, logFile);
|
||||
initializeEarlyLoggingLevel(environment);
|
||||
initializeSystem(environment, this.loggingSystem);
|
||||
initializeSystem(environment, this.loggingSystem, logFile);
|
||||
initializeFinalLoggingLevels(environment, this.loggingSystem);
|
||||
registerShutdownHookIfNecessary(environment, this.loggingSystem);
|
||||
}
|
||||
|
||||
private String getExceptionConversionWord(ConfigurableEnvironment environment) {
|
||||
RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(environment,
|
||||
"logging.");
|
||||
return resolver.getProperty("exception-conversion-word", "%wEx");
|
||||
private void setSystemProperties(ConfigurableEnvironment environment,
|
||||
LogFile logFile) {
|
||||
RelaxedPropertyResolver propertyResolver = new RelaxedPropertyResolver(
|
||||
environment, "logging.");
|
||||
setSystemProperty(propertyResolver, EXCEPTION_CONVERSION_WORD,
|
||||
"exception-conversion-word");
|
||||
setSystemProperty(propertyResolver, CONSOLE_LOG_PATTERN, "pattern.console");
|
||||
setSystemProperty(propertyResolver, FILE_LOG_PATTERN, "pattern.file");
|
||||
setSystemProperty(propertyResolver, LOG_LEVEL_PATTERN, "pattern.level");
|
||||
setSystemProperty(PID_KEY, new ApplicationPid().toString());
|
||||
if (logFile != null) {
|
||||
logFile.applyToSystemProperties();
|
||||
}
|
||||
}
|
||||
|
||||
private void setSystemProperty(RelaxedPropertyResolver propertyResolver,
|
||||
String systemPropertyName, String propertyName) {
|
||||
setSystemProperty(systemPropertyName, propertyResolver.getProperty(propertyName));
|
||||
}
|
||||
|
||||
private void setSystemProperty(String name, String value) {
|
||||
if (System.getProperty(name) == null && value != null) {
|
||||
System.setProperty(name, value);
|
||||
}
|
||||
}
|
||||
|
||||
private void initializeEarlyLoggingLevel(ConfigurableEnvironment environment) {
|
||||
|
@ -253,10 +293,9 @@ public class LoggingApplicationListener implements GenericApplicationListener {
|
|||
}
|
||||
|
||||
private void initializeSystem(ConfigurableEnvironment environment,
|
||||
LoggingSystem system) {
|
||||
LoggingSystem system, LogFile logFile) {
|
||||
LoggingInitializationContext initializationContext = new LoggingInitializationContext(
|
||||
environment);
|
||||
LogFile logFile = LogFile.get(environment);
|
||||
String logConfig = environment.getProperty(CONFIG_PROPERTY);
|
||||
if (ignoreLogConfig(logConfig)) {
|
||||
system.initialize(initializationContext, null, logFile);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2015 the original author or authors.
|
||||
* Copyright 2012-2016 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.
|
||||
|
@ -93,9 +93,6 @@ public class Log4JLoggingSystem extends Slf4JLoggingSystem {
|
|||
|
||||
protected void loadConfiguration(String location, LogFile logFile) {
|
||||
Assert.notNull(location, "Location must not be null");
|
||||
if (logFile != null) {
|
||||
logFile.applyToSystemProperties();
|
||||
}
|
||||
try {
|
||||
Log4jConfigurer.initLogging(location);
|
||||
}
|
||||
|
|
|
@ -157,9 +157,6 @@ public class Log4J2LoggingSystem extends Slf4JLoggingSystem {
|
|||
|
||||
protected void loadConfiguration(String location, LogFile logFile) {
|
||||
Assert.notNull(location, "Location must not be null");
|
||||
if (logFile != null) {
|
||||
logFile.applyToSystemProperties();
|
||||
}
|
||||
try {
|
||||
LoggerContext ctx = getLoggerContext();
|
||||
URL url = ResourceUtils.getURL(location);
|
||||
|
|
|
@ -128,9 +128,6 @@ public class LogbackLoggingSystem extends Slf4JLoggingSystem {
|
|||
protected void loadConfiguration(LoggingInitializationContext initializationContext,
|
||||
String location, LogFile logFile) {
|
||||
Assert.notNull(location, "Location must not be null");
|
||||
if (logFile != null) {
|
||||
logFile.applyToSystemProperties();
|
||||
}
|
||||
LoggerContext loggerContext = getLoggerContext();
|
||||
stopAndReset(loggerContext);
|
||||
try {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2015 the original author or authors.
|
||||
* Copyright 2012-2016 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.
|
||||
|
@ -45,6 +45,7 @@ import org.springframework.context.support.GenericApplicationContext;
|
|||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
|
||||
import static org.hamcrest.Matchers.containsString;
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
import static org.hamcrest.Matchers.is;
|
||||
import static org.hamcrest.Matchers.not;
|
||||
import static org.hamcrest.Matchers.nullValue;
|
||||
|
@ -98,6 +99,9 @@ public class LoggingApplicationListenerTests {
|
|||
System.clearProperty("LOG_PATH");
|
||||
System.clearProperty("PID");
|
||||
System.clearProperty("LOG_EXCEPTION_CONVERSION_WORD");
|
||||
System.clearProperty("CONSOLE_LOG_PATTERN");
|
||||
System.clearProperty("FILE_LOG_PATTERN");
|
||||
System.clearProperty("LOG_LEVEL_PATTERN");
|
||||
System.clearProperty(LoggingSystem.SYSTEM_PROPERTY);
|
||||
if (this.context != null) {
|
||||
this.context.close();
|
||||
|
@ -419,6 +423,24 @@ public class LoggingApplicationListenerTests {
|
|||
childContext.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void systemPropertiesAreSetForLoggingConfiguration() {
|
||||
EnvironmentTestUtils.addEnvironment(this.context,
|
||||
"logging.exception-conversion-word=conversion", "logging.file=file",
|
||||
"logging.path=path", "logging.pattern.console=console",
|
||||
"logging.pattern.file=file", "logging.pattern.level=level");
|
||||
this.initializer.initialize(this.context.getEnvironment(),
|
||||
this.context.getClassLoader());
|
||||
assertThat(System.getProperty("CONSOLE_LOG_PATTERN"), is(equalTo("console")));
|
||||
assertThat(System.getProperty("FILE_LOG_PATTERN"), is(equalTo("file")));
|
||||
assertThat(System.getProperty("LOG_EXCEPTION_CONVERSION_WORD"),
|
||||
is(equalTo("conversion")));
|
||||
assertThat(System.getProperty("LOG_FILE"), is(equalTo("file")));
|
||||
assertThat(System.getProperty("LOG_LEVEL_PATTERN"), is(equalTo("level")));
|
||||
assertThat(System.getProperty("LOG_PATH"), is(equalTo("path")));
|
||||
assertThat(System.getProperty("PID"), is(not(nullValue())));
|
||||
}
|
||||
|
||||
private boolean bridgeHandlerInstalled() {
|
||||
Logger rootLogger = LogManager.getLogManager().getLogger("");
|
||||
Handler[] handlers = rootLogger.getHandlers();
|
||||
|
|
Loading…
Reference in New Issue