如何使用 log4j2 删除旧日志
How to delete old logs with log4j2
(F.Y.I。网上已经查了很多资料,我用的是storm-0.10.0-beta1,Storm中log4j2的配置文件是worker.xml)
现在,我尝试使用 log4j2。
我正在寻找删除旧日志的方法,但找不到。
部分配置如下
<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>
起初,我希望删除超过 3 天的日志文件。
但是,实际上并没有。
所以,我想知道是否有办法删除旧日志。
如果有什么方法我还没有掌握,请告诉我。
您可以在 log4j 的这个 JIRA 条目中找到更多背景信息:
https://issues.apache.org/jira/browse/LOG4J2-524
当您只使用 TimeBasedTriggeringPolicy
时,自动删除旧日志文件似乎不起作用
从 2.5 开始,Log4j 支持在每次翻转时执行的 custom Delete action。
您可以通过以下任意组合来控制删除哪些文件:
需要更多 fine-grained 控制要删除的文件的用户可以使用任何受支持的 JSR-223 脚本语言指定脚本条件。
请查看 documentation,其中包含三个可能有用的完整示例。
对于您的问题,此代码段应该有效:
<RollingFile name="rollingFile"
fileName="/path/app.log"
filePattern="/path/app.%d{yyyy-MM-dd}.log"
ignoreExceptions="false">
. . .
<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>
. . .
<RollingFile>
最后,小心!无法恢复以这种方式删除的文件。 :-)
(F.Y.I。网上已经查了很多资料,我用的是storm-0.10.0-beta1,Storm中log4j2的配置文件是worker.xml)
现在,我尝试使用 log4j2。
我正在寻找删除旧日志的方法,但找不到。 部分配置如下
<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>
起初,我希望删除超过 3 天的日志文件。
但是,实际上并没有。
所以,我想知道是否有办法删除旧日志。
如果有什么方法我还没有掌握,请告诉我。
您可以在 log4j 的这个 JIRA 条目中找到更多背景信息:
https://issues.apache.org/jira/browse/LOG4J2-524
当您只使用 TimeBasedTriggeringPolicy
从 2.5 开始,Log4j 支持在每次翻转时执行的 custom Delete action。
您可以通过以下任意组合来控制删除哪些文件:
需要更多 fine-grained 控制要删除的文件的用户可以使用任何受支持的 JSR-223 脚本语言指定脚本条件。
请查看 documentation,其中包含三个可能有用的完整示例。
对于您的问题,此代码段应该有效:
<RollingFile name="rollingFile"
fileName="/path/app.log"
filePattern="/path/app.%d{yyyy-MM-dd}.log"
ignoreExceptions="false">
. . .
<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>
. . .
<RollingFile>
最后,小心!无法恢复以这种方式删除的文件。 :-)