( F.Y.I. I already searched out many documents in Internet. I'm using storm-0.10.0-beta1. Configuration file of log4j2 in Storm is worker.xml )
Now, I try to use log4j2.
I'm searching out way of deleting old logs but I cannot find out.
Part of configuration is like below.
<RollingFile name="SERVICE_APPENDER"
fileName="${sys:storm.home}/logs/${sys:logfile.name}.service"
filePattern="${sys:storm.home}/logs/${sys:logfile.name}.service.%d{yyyyMMdd}">
<PatternLayout>
<pattern>${pattern}</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
<DefaultRolloverStrategy max="9"/>
</RollingFile>
At first, I expected that log files which are older than 3 days are removed.
But, actually, it doesn't.
So, I wonder whether there is a way to remove old logs or not.
If there is a way which I didn't catch yet, please notify me.
Since 2.5, Log4j supports a custom Delete action that is executed on every rollover.
You can control which files are deleted by any combination of:
- Name (matching a glob or a regex)
- Age ("delete if 14 days old or older")
- Count ("keep only the most recent 3")
- Size ("keep only the most recent files up to 500MB")
Users who need even more fine-grained control over which files to delete can specify a script condition using any supported JSR-223 scripting language.
Please check out the documentation, it has three full examples that may be useful.
For your question, this snippet should work:
<DefaultRolloverStrategy>
<!--
* only files in the log folder, no sub folders
* only rolled over log files (name match)
* only files that are 4 days old or older
-->
<Delete basePath="${sys:storm.home}/logs/" maxDepth="1">
<IfFileName glob="*.service.????????" />
<IfLastModified age="4d" />
</Delete>
</DefaultRolloverStrategy>
Finally, be careful! There is no way to recover files deleted this way. :-)
You can find more background information in this JIRA entry for log4j:
https://issues.apache.org/jira/browse/LOG4J2-524
It seems to be the case that auto deleting old log files does not work when you only use a TimeBasedTriggeringPolicy