Index: log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderDirectWriteWithReconfigureTest.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderDirectWriteWithReconfigureTest.java (revision ) +++ log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderDirectWriteWithReconfigureTest.java (revision ) @@ -0,0 +1,75 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE + * file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file + * to You under the Apache license, Version 2.0 (the "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the license for the specific language + * governing permissions and limitations under the license. + */ +package org.apache.logging.log4j.core.appender.rolling; + +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; + +import java.io.File; +import java.net.URI; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.junit.LoggerContextRule; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.RuleChain; + +/** + * + */ +public class RollingAppenderDirectWriteWithReconfigureTest +{ + + private static final String CONFIG = "log4j-rolling-direct-reconfigure.xml"; + + private static final String DIR = "target/rolling-direct-reconfigure"; + + public static LoggerContextRule loggerContextRule = + LoggerContextRule.createShutdownTimeoutLoggerContextRule( CONFIG ); + + @Rule + public RuleChain chain = loggerContextRule.withCleanFoldersRule( DIR ); + + private Logger logger; + + @Before + public void setUp() + throws Exception + { + this.logger = loggerContextRule.getLogger( RollingAppenderDirectWriteWithReconfigureTest.class.getName() ); + } + + @Test + public void testRollingAppenderWithReconfigure() + throws Exception + { + logger.debug( "Before reconfigure" ); + + LoggerContext context = (LoggerContext) LogManager.getContext(); + context.setConfigLocation( new URI( CONFIG ) ); + context.reconfigure(); + + Thread.sleep( 1000 ); + + logger.debug( "After reconfigure" ); + + final File dir = new File( DIR ); + assertTrue( "Directory not created", dir.exists() && dir.listFiles().length > 0 ); + final File[] files = dir.listFiles(); + assertNotNull( files ); + assertThat( dir.listFiles().length, is( equalTo( 2 ) ) ); + } +} Index: log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DirectWriteRolloverStrategy.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DirectWriteRolloverStrategy.java (revision d3a8f0925e5a4cba0b59cdb7b100f21afa1f51bf) +++ log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DirectWriteRolloverStrategy.java (revision ) @@ -184,7 +184,7 @@ LOGGER.trace("DirectWriteRolloverStrategy.purge() took {} milliseconds", durationMillis); } Action compressAction = null; - final String sourceName = currentFileName; + final String sourceName = getCurrentFileName(manager); String compressedName = sourceName; currentFileName = null; nextIndex = fileIndex + 1; Index: log4j-core/src/test/resources/log4j-rolling-direct-reconfigure.xml IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- log4j-core/src/test/resources/log4j-rolling-direct-reconfigure.xml (revision ) +++ log4j-core/src/test/resources/log4j-rolling-direct-reconfigure.xml (revision ) @@ -0,0 +1,50 @@ + + + + + target/rolling-direct-reconfigure + + + + + + + + + + + + %d %p %C{1.} [%t] %m%n + + + > + + + + + + + + + + + + + +