This is an automated email from the ASF dual-hosted git repository. rgoers pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
The following commit(s) were added to refs/heads/master by this push: new 58fb311 LOG4J2-2009 - Expose LoggerContext.setConfiguration as a public method. 58fb311 is described below commit 58fb311dad59c67c9a87353dc4ab32c12f1bb2c6 Author: Ralph Goers <rgo...@apache.org> AuthorDate: Sat Feb 2 14:04:58 2019 -0700 LOG4J2-2009 - Expose LoggerContext.setConfiguration as a public method. --- .../apache/logging/log4j/core/LoggerContext.java | 2 +- .../rolling/RollingFileAppenderUpdateDataTest.java | 32 ++++++++++++++++++++-- src/changes/changes.xml | 3 ++ 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java index 38dbef7..9d12421 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java @@ -521,7 +521,7 @@ public class LoggerContext extends AbstractLifeCycle * @param config The new Configuration. * @return The previous Configuration. */ - private Configuration setConfiguration(final Configuration config) { + public Configuration setConfiguration(final Configuration config) { if (config == null) { LOGGER.error("No configuration found for context '{}'.", contextName); // No change, return the current configuration. diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingFileAppenderUpdateDataTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingFileAppenderUpdateDataTest.java index 397679e..16900ca 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingFileAppenderUpdateDataTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingFileAppenderUpdateDataTest.java @@ -26,7 +26,9 @@ import org.apache.logging.log4j.core.config.Configurator; import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilder; import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilderFactory; import org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration; +import org.junit.After; import org.junit.Assert; +import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; @@ -63,6 +65,21 @@ public class RollingFileAppenderUpdateDataTest { return builder; } + private LoggerContext loggerContext1 = null; + private LoggerContext loggerContext2 = null; + + @After + public void after() { + if (loggerContext1 != null) { + loggerContext1.close(); + loggerContext1 = null; + } + if (loggerContext2 != null) { + loggerContext2.close(); + loggerContext2 = null; + } + } + @Test public void testClosingLoggerContext() { // initial config with indexed rollover @@ -79,16 +96,27 @@ public class RollingFileAppenderUpdateDataTest { @Test public void testNotClosingLoggerContext() { // initial config with indexed rollover - final LoggerContext loggerContext1 = Configurator.initialize(buildConfigA().build()); + loggerContext1 = Configurator.initialize(buildConfigA().build()); validateAppender(loggerContext1, "target/rolling-update-date/foo.log.%i"); // rebuild config with date based rollover - final LoggerContext loggerContext2 = Configurator.initialize(buildConfigB().build()); + loggerContext2 = Configurator.initialize(buildConfigB().build()); Assert.assertNotNull("No LoggerContext", loggerContext2); Assert.assertTrue("Expected same logger context to be returned", loggerContext1 == loggerContext2); validateAppender(loggerContext1, "target/rolling-update-date/foo.log.%i"); } + @Test + public void testReconfigure() { + // initial config with indexed rollover + loggerContext1 = Configurator.initialize(buildConfigA().build()); + validateAppender(loggerContext1, "target/rolling-update-date/foo.log.%i"); + + // rebuild config with date based rollover + loggerContext1.setConfiguration(buildConfigB().build()); + validateAppender(loggerContext1, "target/rolling-update-date/foo.log.%d{yyyy-MM-dd-HH:mm:ss}.%i"); + } + private void validateAppender(final LoggerContext loggerContext, final String expectedFilePattern) { final RollingFileAppender appender = loggerContext.getConfiguration().getAppender("fooAppender"); Assert.assertNotNull(appender); diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 820a015..ca2862c 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -354,6 +354,9 @@ </action> </release> <release version="2.11.2" date="2018-MM-DD" description="GA Release 2.11.2"> + <action issue="LOG4J2-2009" dev="rgoers" type="fix"> + Expose LoggerContext.setConfiguration as a public method. + </action> <action issue="LOG4J2-2542" dev="rgoers" type="fix"> CronTriggeringPolicy was not rolling properly, especially when used with the SizeBasedTriggeringPolicy. </action>