I am using log4j2 2.11
to create log files. I have these log files rotated based on time and size. The rotating based on time works great however, I am having a weird issue when I rotate based on size.
When I rotated based on size I compress the log file into the following named gzip file ${logdir}/${eventfilename}-%d{yyyyMMddHHmmss}{GMT+0}.log.gz
, however, the log.gz
file keeps ending up with the same time and thus overwrites the previous zipped log file endlessly. Where my understanding is that the current time will be used for the gzip file and not the first time grabbed to create the gzip file.
What could be causing this issue where my rotated file based on size keeps ending up with the same name and does not update to the current time to be used in the file name?
As of note here is my complete configuration file:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="ALL" shutdownHook="disable">
<Properties>
<Property name="logdir">${env:DIR}/log</Property>
<Property name="eventfilename">foo_event</Property>
<Property name="errorfilename">foo_error</Property>
<Property name="msgformat">%d{yyyy-MM-dd HH:mm:ss.SSS}{GMT+0}Z [%t] %-5level %logger{1} - %msg%n</Property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="${msgformat}"/>
</Console>
<RollingFile name="ERROR_FILE" fileName="${logdir}/${errorfilename}.log"
filePattern="${logdir}/${errorfilename}-%d{yyyyMMddHHmmss}{GMT+0}.log.gz">
<PatternLayout charset="UTF-8" pattern="${msgformat}"/>
<Policies>
<SizeBasedTriggeringPolicy size="10 MB"/>
</Policies>
<DefaultRolloverStrategy>
<Delete basePath="${logdir}">
<IfFileName glob="${errorfilename}-*">
<IfAccumulatedFileSize exceeds="100 MB"/>
</IfFileName>
</Delete>
</DefaultRolloverStrategy>
<ThresholdFilter level="WARN"/>
</RollingFile>
<RollingFile name="EVENT_FILE" fileName="${logdir}/${eventfilename}.log"
filePattern="${logdir}/${eventfilename}-%d{yyyyMMddHHmmss}{GMT+0}.log.gz">
<PatternLayout charset="UTF-8" pattern="${msgformat}"/>
<Policies>
<TimeBasedTriggeringPolicy interval="43200" modulate="false"/>
<SizeBasedTriggeringPolicy size="1 MB"/>
</Policies>
<DefaultRolloverStrategy>
<Delete basePath="${logdir}">
<IfFileName glob="${eventfilename}-*">
<IfAccumulatedFileSize exceeds="100 MB"/>
</IfFileName>
</Delete>
</DefaultRolloverStrategy>
<ThresholdFilter level="TRACE"/>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="foo.utils.FooLogger" level="TRACE"
additivity="false">
<AppenderRef ref="ERROR_FILE"/>
<AppenderRef ref="EVENT_FILE"/>
</Logger>
<Logger name="foo.utils.foo.FooPathUtils" level="INFO"
additivity="false">
<!-- Change level to debug to log java path info at startup -->
<AppenderRef ref="ERROR_FILE"/>
<AppenderRef ref="EVENT_FILE"/>
</Logger>
<Logger name="foo" level="INFO" additivity="false">
<AppenderRef ref="ERROR_FILE"/>
<AppenderRef ref="EVENT_FILE"/>
</Logger>
<Root level="TRACE">
<AppenderRef ref="Console" />
</Root>
</Loggers>
</Configuration>