(仅供参考,我已经在网上搜索了很多文档。我使用的是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 支持自定义删除操作 http://logging.apache.org/log4j/2.x/manual/appenders.html#CustomDeleteOnRollover每次翻转时都会执行该操作。
您可以通过以下任意组合来控制删除哪些文件:
- 名称(匹配glob https://docs.oracle.com/javase/7/docs/api/java/nio/file/FileSystem.html#getPathMatcher(java.lang.String) or a regex https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html)
-
Age http://logging.apache.org/log4j/2.x/log4j-core/apidocs/org/apache/logging/log4j/core/appender/rolling/action/Duration.html#parseCharSequence(“如果超过 14 天则删除”)
- 计数(“仅保留最近的 3 个”)
- 大小(“仅保留最大 500MB 的最新文件”)
需要更细粒度控制要删除的文件的用户可以使用任何受支持的 JSR-223 脚本语言指定脚本条件。
请查看文档 http://logging.apache.org/log4j/2.x/manual/appenders.html#CustomDeleteOnRollover,它有三个可能有用的完整示例。
对于你的问题,这个片段应该有效:
<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>
最后,要小心!无法恢复以这种方式删除的文件。 :-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)