java - Log4j2 default rollover strategy deleting new log files -


i trying configure log4j2 use rollingfileappender not working expect to.

here current code configuring log4j2 modified version of found here: https://logging.apache.org/log4j/2.x/manual/customconfig.html#configurator under rollingfileappender example ( have used example given there without modifications similar results)

   loggercontext ctx;    public logger logger;       configurationbuilder< builtconfiguration > builder =     configurationbuilderfactory.newconfigurationbuilder();      builder.setstatuslevel(level.all);     builder.setconfigurationname("rollingbuilder"); // create console appender     appendercomponentbuilder appenderbuilder = builder.newappender("stdout", "console").addattribute("target",             consoleappender.target.system_out);     appenderbuilder.add(builder.newlayout("patternlayout").             addattribute("pattern", "%d [%t] %-5level: %msg%n%throwable"));     builder.add( appenderbuilder );      layoutcomponentbuilder layoutbuilder = builder.newlayout("patternlayout")             .addattribute("pattern", "%d [%t] %-5level: %msg%n");     componentbuilder triggeringpolicy = builder.newcomponent("policies")             .addcomponent(builder.newcomponent("crontriggeringpolicy").addattribute("schedule", "0 * * * * ?"))             .addcomponent(builder.newcomponent("sizebasedtriggeringpolicy").addattribute("size", "100m"));     componentbuilder defaultstrat = builder.newcomponent("defaultrolloverstrategy")             .addattribute("min", 10)             .addattribute("max", 20);     appenderbuilder = builder.newappender("rolling", "rollingfile")             .addattribute("filename", "targettest/rollingtest.log")             .addattribute("filepattern", "targettest/archive/rollingtest-%d{yy-dd-mm-kk-mm}-test.log.gz")              .addattribute("immediateflush", false)             .addcomponent(defaultstrat)             .add(layoutbuilder)             .addcomponent(triggeringpolicy);     builder.add(appenderbuilder);   // create new logger     builder.add( builder.newlogger( "testlogger", level.all )             .add( builder.newappenderref( "rolling" ) )   );             //.addattribute( "additivity", false ) );      builder.add( builder.newrootlogger( level.all )             .add( builder.newappenderref( "rolling" ) ) );       this.ctx = configurator.initialize(builder.build());      this.logger = ctx.getlogger("testlogger"); 

what expect do: log rollingtest.log file, every minute should archive rollingtest-16-21-07-11-30.log.gz file , start logging again in rollingtest.log file, until rollover happens minute after that.

what happens: logs logged rollingtest.log , after minute of starting server first rollover attempts happen, file deleted , after rollover attempts happen every second. @ point if try log more, try archive in new file, new file deleted.

here logs of happening:

2016-07-21 15:20:00,009 log4j2-log4j2scheduled-1 trace defaultrolloverstrategy.purge() took 6.0 milliseconds 2016-07-21 15:20:00,030 log4j2-log4j2scheduled-1 debug rollingfilemanager executing synchronous filerenameaction[targettest/rollingtest.log targettest/archive/rollingtest-16-21-07-15-20-test.log, renameemptyfiles=false] 2016-07-21 15:20:00,042 log4j2-log4j2scheduled-1 trace renamed file /users/source/targettest/rollingtest.log /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log files.move 2016-07-21 15:20:00,042 log4j2-log4j2scheduled-1 debug rollingfilemanager executing async gzcompressaction[targettest/archive/rollingtest-16-21-07-15-20-test.log targettest/archive/rollingtest-16-21-07-15-20-test.log.gz, deletesource=true] 2016-07-21 15:20:01,004 log4j2-log4j2scheduled-1 trace defaultrolloverstrategy.purge() took 0.0 milliseconds 2016-07-21 15:20:01,004 log4j2-log4j2scheduled-1 debug rollingfilemanager executing synchronous filerenameaction[targettest/rollingtest.log targettest/archive/rollingtest-16-21-07-15-19-test.log, renameemptyfiles=false] 2016-07-21 15:20:02,004 log4j2-log4j2scheduled-1 debug defaultrolloverstrategy.purgeascending deleting targettest/archive/rollingtest-16-21-07-15-20-test.log.gz @ low index 10: slots full. 2016-07-21 15:20:02,004 log4j2-log4j2scheduled-1 debug defaultrolloverstrategy.purgeascending executing 9 of 10: filerenameaction[targettest/archive/rollingtest-16-21-07-15-20-test.log.gz targettest/archive/rollingtest-16-21-07-15-20-test.log.gz, renameemptyfiles=true] 2016-07-21 15:20:02,005 log4j2-log4j2scheduled-1 error unable move file /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz: java.nio.file.nosuchfileexception /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz -> /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz 2016-07-21 15:20:02,006 log4j2-log4j2scheduled-1 error unable copy file /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz: java.nio.file.nosuchfileexception /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz 2016-07-21 15:20:03,004 log4j2-log4j2scheduled-1 trace defaultrolloverstrategy.purge() took 0.0 milliseconds 2016-07-21 15:20:03,004 log4j2-log4j2scheduled-1 debug rollingfilemanager executing synchronous filerenameaction[targettest/rollingtest.log targettest/archive/rollingtest-16-21-07-15-20-test.log, renameemptyfiles=false] 2016-07-21 15:20:04,004 log4j2-log4j2scheduled-1 trace defaultrolloverstrategy.purge() took 0.0 milliseconds 2016-07-21 15:20:04,005 log4j2-log4j2scheduled-1 debug rollingfilemanager executing synchronous filerenameaction[targettest/rollingtest.log targettest/archive/rollingtest-16-21-07-15-20-test.log, renameemptyfiles=false] 2016-07-21 15:20:05,006 log4j2-log4j2scheduled-1 trace defaultrolloverstrategy.purge() took 0.0 milliseconds 2016-07-21 15:20:05,006 log4j2-log4j2scheduled-1 debug rollingfilemanager executing synchronous filerenameaction[targettest/rollingtest.log targettest/archive/rollingtest-16-21-07-15-20-test.log, renameemptyfiles=false] 2016-07-21 15:20:06,005 log4j2-log4j2scheduled-1 trace defaultrolloverstrategy.purge() took 0.0 milliseconds 2016-07-21 15:20:06,006 log4j2-log4j2scheduled-1 debug rollingfilemanager executing synchronous filerenameaction[targettest/rollingtest.log targettest/archive/rollingtest-16-21-07-15-20-test.log, renameemptyfiles=false] 2016-07-21 15:20:06,007 log4j2-log4j2scheduled-1 trace renamed file /users/source/targettest/rollingtest.log /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log files.move 2016-07-21 15:20:06,007 log4j2-log4j2scheduled-1 debug rollingfilemanager executing async gzcompressaction[targettest/archive/rollingtest-16-21-07-15-20-test.log targettest/archive/rollingtest-16-21-07-15-20-test.log.gz, deletesource=true] 2016-07-21 15:20:07,001 log4j2-log4j2scheduled-1 debug defaultrolloverstrategy.purgeascending deleting targettest/archive/rollingtest-16-21-07-15-20-test.log.gz @ low index 10: slots full. 2016-07-21 15:20:07,002 log4j2-log4j2scheduled-1 debug defaultrolloverstrategy.purgeascending executing 9 of 10: filerenameaction[targettest/archive/rollingtest-16-21-07-15-20-test.log.gz targettest/archive/rollingtest-16-21-07-15-20-test.log.gz, renameemptyfiles=true] 2016-07-21 15:20:07,002 log4j2-log4j2scheduled-1 error unable move file /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz: java.nio.file.nosuchfileexception /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz -> /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz 2016-07-21 15:20:07,002 log4j2-log4j2scheduled-1 error unable copy file /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz: java.nio.file.nosuchfileexception /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz 2016-07-21 15:20:08,003 log4j2-log4j2scheduled-1 trace defaultrolloverstrategy.purge() took 0.0 milliseconds 2016-07-21 15:20:08,004 log4j2-log4j2scheduled-1 debug rollingfilemanager executing synchronous filerenameaction[targettest/rollingtest.log targettest/archive/rollingtest-16-21-07-15-20-test.log, renameemptyfiles=false] 2016-07-21 15:20:08,005 log4j2-log4j2scheduled-1 trace renamed file /users/source/targettest/rollingtest.log /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log files.move 2016-07-21 15:20:08,005 log4j2-log4j2scheduled-1 debug rollingfilemanager executing async gzcompressaction[targettest/archive/rollingtest-16-21-07-15-20-test.log targettest/archive/rollingtest-16-21-07-15-20-test.log.gz, deletesource=true] 2016-07-21 15:20:09,007 log4j2-log4j2scheduled-1 debug defaultrolloverstrategy.purgeascending deleting targettest/archive/rollingtest-16-21-07-15-20-test.log.gz @ low index 10: slots full. 2016-07-21 15:20:09,009 log4j2-log4j2scheduled-1 debug defaultrolloverstrategy.purgeascending executing 9 of 10: filerenameaction[targettest/archive/rollingtest-16-21-07-15-20-test.log.gz targettest/archive/rollingtest-16-21-07-15-20-test.log.gz, renameemptyfiles=true] 2016-07-21 15:20:09,009 log4j2-log4j2scheduled-1 error unable move file /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz: java.nio.file.nosuchfileexception /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz -> /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz 2016-07-21 15:20:09,010 log4j2-log4j2scheduled-1 error unable copy file /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz: java.nio.file.nosuchfileexception /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz 2016-07-21 15:20:10,004 log4j2-log4j2scheduled-1 trace defaultrolloverstrategy.purge() took 0.0 milliseconds 2016-07-21 15:20:10,004 log4j2-log4j2scheduled-1 debug rollingfilemanager executing synchronous filerenameaction[targettest/rollingtest.log targettest/archive/rollingtest-16-21-07-15-20-test.log, renameemptyfiles=false] 2016-07-21 15:20:11,004 log4j2-log4j2scheduled-1 trace defaultrolloverstrategy.purge() took 0.0 milliseconds 2016-07-21 15:20:11,005 log4j2-log4j2scheduled-1 debug rollingfilemanager executing synchronous filerenameaction[targettest/rollingtest.log targettest/archive/rollingtest-16-21-07-15-20-test.log, renameemptyfiles=false] 2016-07-21 15:20:11,006 log4j2-log4j2scheduled-1 trace renamed file /users/source/targettest/rollingtest.log /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log files.move 2016-07-21 15:20:11,006 log4j2-log4j2scheduled-1 debug rollingfilemanager executing async gzcompressaction[targettest/archive/rollingtest-16-21-07-15-20-test.log targettest/archive/rollingtest-16-21-07-15-20-test.log.gz, deletesource=true] 2016-07-21 15:20:12,006 log4j2-log4j2scheduled-1 debug defaultrolloverstrategy.purgeascending deleting targettest/archive/rollingtest-16-21-07-15-20-test.log.gz @ low index 10: slots full. 2016-07-21 15:20:12,006 log4j2-log4j2scheduled-1 debug defaultrolloverstrategy.purgeascending executing 9 of 10: filerenameaction[targettest/archive/rollingtest-16-21-07-15-20-test.log.gz targettest/archive/rollingtest-16-21-07-15-20-test.log.gz, renameemptyfiles=true] 2016-07-21 15:20:12,007 log4j2-log4j2scheduled-1 error unable move file /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz: java.nio.file.nosuchfileexception /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz -> /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz 2016-07-21 15:20:12,007 log4j2-log4j2scheduled-1 error unable copy file /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz: java.nio.file.nosuchfileexception /users/source/targettest/archive/rollingtest-16-21-07-15-20-test.log.gz 2016-07-21 15:20:13,004 log4j2-log4j2scheduled-1 trace defaultrolloverstrategy.purge() took 0.0 milliseconds 2016-07-21 15:20:13,004 log4j2-log4j2scheduled-1 debug rollingfilemanager executing synchronous filerenameaction[targettest/rollingtest.log targettest/archive/rollingtest-16-21-07-15-20-test.log, renameemptyfiles=false] 

if put %i argument file name new files not deleted, rollover process still fires every second after initial 1 has completed , end new file every log event send logger.

edit: tried using xml configuration file instead of programmatic approach above similar results. here configuration file used:

<configuration status="debug"> <appenders>     <rollingfile name="rollingfile" filename="target/logfile.log"                  filepattern="target/archive/logfile-%d{yyyy-mm-dd-hh-mm-ss}.log" >         <patternlayout>             <pattern>%d{dd/mmm/yyyy hh:mm:ss,sss}- %c{1}: %m%n</pattern>         </patternlayout>         <policies>             <crontriggeringpolicy schedule="0 * * * * ?"/>         </policies>     </rollingfile> </appenders> <loggers>     <logger name="root" level="debug" additivity="false">         <appender-ref ref="rollingfile" level="debug"/>     </logger>     <logger name="testlogger" level="debug" additivity="false">         <appender-ref ref="rollingfile" level="debug"/>     </logger>     <root level="debug" additivity="false">         <appenderref ref="rollingfile"/>     </root> </loggers> 

when had %i in file name rollover triggered every second moment server started , created new file each log event sent it.

when didn't have %i in file name had 2 experiences:

  • the first rollover every second after initial event , new file every logging event

  • the second described above roll on files got deleted after created. triggered rollover every second after initial event.

this appears addressed in lastest versions. related issues, https://issues.apache.org/jira/browse/log4j2-1480

https://issues.apache.org/jira/browse/log4j2-1548

i have update version 2.8.2 , no longer seeing error.


Comments