【发布时间】:2018-08-24 13:56:14
【问题描述】:
我在为 log4j2.xml 配置“DefaultRolloverStrategy”以执行以下操作时遇到问题:-
确保仅保留最后 4 个日志文件,并删除较旧的日志文件。 所以要清楚,最后 4 个日志文件可能超过几天或同一天,因此, 最后 4 个日志文件可能具有相同的日期或跨越不同的日期。
下面是log4j2.xml的内容
<?xml version="1.0" encoding="UTF-8" ?>
<Configuration>
<Appenders>
<!-- Console Appender -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{DEFAULT} [%t] %-5level %logger{36} - %msg%n" />
</Console>
<!-- Rolling File Appender -->
<RollingFile name="File" fileName="app_log.log"
filePattern="app_log-%d{yyyy-MM-dd}.%i.log">
<PatternLayout pattern="%d{DEFAULT} [%t] %-5level %logger{36} - %msg%n" />
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="2 KB" />
</Policies>
<DefaultRolloverStrategy>
<Delete basePath="" maxDepth="1">
<IfFileName glob="app_log*.txt">
<IfAny>
<IfAccumulatedFileSize exceeds="5 KB" />
<IfAccumulatedFileCount exceeds="4" />
</IfAny>
</IfFileName>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="com.app.utilities" level="info" additivity="true">
<AppenderRef ref="File" />
</Logger>
<Root level="debug">
<AppenderRef ref="Console" />
</Root>
</Loggers>
</Configuration>
我运行我的应用程序如下所示
java -Dlog4j.configurationFile=./app-log4j2.xml -jar application.jar
日志是在调用上述命令的同一目录中生成的。
以下是日志文件的示例历史记录:-
File Name Date Modified
app_log.log 8/27/2018 2:25 PM
app_log-2018-08-27.2.log 8/27/2018 2:25 PM
app_log-2018-08-27.1.log 8/27/2018 2:11 PM
app_log-2018-08-26.5.log 8/26/2018 2:01 PM
app_log-2018-08-26.4.log 8/26/2018 2:00 PM
app_log-2018-08-26.3.log 8/26/2018 1:58 PM
app_log-2018-08-26.2.log 8/26/2018 1:57 PM
app_log-2018-08-26.1.log 8/26/2018 1:56 PM
“DefaultRolloverStrategy”似乎没有效果。
我认为我的配置是错误的。但是,我非常感谢您的建议 请纠正这个问题。
此外,如果要求进行更改,以便删除超过 20 天的日志文件。 怎么可能达到。
非常感谢您的帮助
皮特
【问题讨论】: