Merge branch '1.3.x'

This commit is contained in:
Andy Wilkinson 2016-02-11 18:00:10 +00:00
commit 72928de518
4 changed files with 74 additions and 20 deletions

View File

@ -109,6 +109,31 @@ public class LoggingApplicationListener implements GenericApplicationListener {
*/ */
public static final String EXCEPTION_CONVERSION_WORD = "LOG_EXCEPTION_CONVERSION_WORD"; 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. * The name of the {@link LoggingSystem} bean.
*/ */
@ -222,23 +247,38 @@ public class LoggingApplicationListener implements GenericApplicationListener {
*/ */
protected void initialize(ConfigurableEnvironment environment, protected void initialize(ConfigurableEnvironment environment,
ClassLoader classLoader) { ClassLoader classLoader) {
if (System.getProperty(PID_KEY) == null) { LogFile logFile = LogFile.get(environment);
System.setProperty(PID_KEY, new ApplicationPid().toString()); setSystemProperties(environment, logFile);
}
if (System.getProperty(EXCEPTION_CONVERSION_WORD) == null) {
System.setProperty(EXCEPTION_CONVERSION_WORD,
getExceptionConversionWord(environment));
}
initializeEarlyLoggingLevel(environment); initializeEarlyLoggingLevel(environment);
initializeSystem(environment, this.loggingSystem); initializeSystem(environment, this.loggingSystem, logFile);
initializeFinalLoggingLevels(environment, this.loggingSystem); initializeFinalLoggingLevels(environment, this.loggingSystem);
registerShutdownHookIfNecessary(environment, this.loggingSystem); registerShutdownHookIfNecessary(environment, this.loggingSystem);
} }
private String getExceptionConversionWord(ConfigurableEnvironment environment) { private void setSystemProperties(ConfigurableEnvironment environment,
RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(environment, LogFile logFile) {
"logging."); RelaxedPropertyResolver propertyResolver = new RelaxedPropertyResolver(
return resolver.getProperty("exception-conversion-word", "%wEx"); 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) { private void initializeEarlyLoggingLevel(ConfigurableEnvironment environment) {
@ -253,10 +293,9 @@ public class LoggingApplicationListener implements GenericApplicationListener {
} }
private void initializeSystem(ConfigurableEnvironment environment, private void initializeSystem(ConfigurableEnvironment environment,
LoggingSystem system) { LoggingSystem system, LogFile logFile) {
LoggingInitializationContext initializationContext = new LoggingInitializationContext( LoggingInitializationContext initializationContext = new LoggingInitializationContext(
environment); environment);
LogFile logFile = LogFile.get(environment);
String logConfig = environment.getProperty(CONFIG_PROPERTY); String logConfig = environment.getProperty(CONFIG_PROPERTY);
if (ignoreLogConfig(logConfig)) { if (ignoreLogConfig(logConfig)) {
system.initialize(initializationContext, null, logFile); system.initialize(initializationContext, null, logFile);

View File

@ -157,9 +157,6 @@ public class Log4J2LoggingSystem extends Slf4JLoggingSystem {
protected void loadConfiguration(String location, LogFile logFile) { protected void loadConfiguration(String location, LogFile logFile) {
Assert.notNull(location, "Location must not be null"); Assert.notNull(location, "Location must not be null");
if (logFile != null) {
logFile.applyToSystemProperties();
}
try { try {
LoggerContext ctx = getLoggerContext(); LoggerContext ctx = getLoggerContext();
URL url = ResourceUtils.getURL(location); URL url = ResourceUtils.getURL(location);

View File

@ -128,9 +128,6 @@ public class LogbackLoggingSystem extends Slf4JLoggingSystem {
protected void loadConfiguration(LoggingInitializationContext initializationContext, protected void loadConfiguration(LoggingInitializationContext initializationContext,
String location, LogFile logFile) { String location, LogFile logFile) {
Assert.notNull(location, "Location must not be null"); Assert.notNull(location, "Location must not be null");
if (logFile != null) {
logFile.applyToSystemProperties();
}
LoggerContext loggerContext = getLoggerContext(); LoggerContext loggerContext = getLoggerContext();
stopAndReset(loggerContext); stopAndReset(loggerContext);
try { try {

View File

@ -94,6 +94,9 @@ public class LoggingApplicationListenerTests {
System.clearProperty("LOG_PATH"); System.clearProperty("LOG_PATH");
System.clearProperty("PID"); System.clearProperty("PID");
System.clearProperty("LOG_EXCEPTION_CONVERSION_WORD"); 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); System.clearProperty(LoggingSystem.SYSTEM_PROPERTY);
if (this.context != null) { if (this.context != null) {
this.context.close(); this.context.close();
@ -409,6 +412,24 @@ public class LoggingApplicationListenerTests {
childContext.close(); 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")).isEqualTo("console");
assertThat(System.getProperty("FILE_LOG_PATTERN")).isEqualTo("file");
assertThat(System.getProperty("LOG_EXCEPTION_CONVERSION_WORD"))
.isEqualTo("conversion");
assertThat(System.getProperty("LOG_FILE")).isEqualTo("file");
assertThat(System.getProperty("LOG_LEVEL_PATTERN")).isEqualTo("level");
assertThat(System.getProperty("LOG_PATH")).isEqualTo("path");
assertThat(System.getProperty("PID")).isNotNull();
}
private boolean bridgeHandlerInstalled() { private boolean bridgeHandlerInstalled() {
Logger rootLogger = LogManager.getLogManager().getLogger(""); Logger rootLogger = LogManager.getLogManager().getLogger("");
Handler[] handlers = rootLogger.getHandlers(); Handler[] handlers = rootLogger.getHandlers();