先说结论:通过log4j调用脚本实现。
通过配置DefaultRolloverStrategy可以按日期删除文件,但无法删除文件夹,这是log4j2的默认行为。
那如果想删除文件夹怎么办呢?
比如我们可能会把log按日期存储在各日期文件夹下,如果不删除文件夹,就会导致空文件夹越来越多。
通过扒拉源码,发现log4j2是支持删除文件夹的,但需要编写脚本:在xml中添加ScriptCondition节点,再添加Script子节点,这样删除什么完全由脚本决定。
具体写法可以参考官方文档:
http://logging.apache.org/log4j/2.x/manual/appenders.html#ScriptCondition
只需要在Script里返回要删除的文件夹就可以了。
这个文档里面也介绍了脚本内部可引用的log4j2的一些变量。
注意:Groovy需要引用groovy-all、groovy-jsr223的库。
有空整理一下这部分分析。
网友评论