gpt4 book ai didi

java - 如何使用 log4j2 删除旧日志

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:43:11 24 4
gpt4 key购买 nike

( 仅供引用,我已经在网上搜索了很多文档,我使用的是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 天的日志文件。

但实际上并非如此。

所以,我想知道是否有办法删除旧日志。

如果有我还没有掌握的方法,请通知我。

最佳答案

从 2.5 开始,Log4j 支持 custom Delete action在每次翻转时执行。

您可以通过以下任意组合来控制删除哪些文件:

  1. 姓名(匹配 globregex )
  2. Age (“如果超过 14 天则删除”)
  3. 计数(“只保留最近的 3 个”)
  4. 大小(“只保留最近的文件,最大 500MB”)

需要更细粒度地控制要删除的文件的用户可以使用任何受支持的 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>

最后,小心!无法恢复以这种方式删除的文件。 :-)

关于java - 如何使用 log4j2 删除旧日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33237731/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com