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
Post a Comment