我正在尝试编写一个每日滚动策略的追加程序,该策略每天最多可容纳10个文件,无论何时。
每10 MB,它将创建一个新的日志文件,并将其与今天的日期和索引一起存储。
这是我到目前为止所拥有的:
<RollingFile name="MyRollingFile" fileName="./log/logs.log"
filePattern="./log/logs-%d{yyyy-MM-dd}-%i.log">
<PatternLayout>
<pattern>%n%d{yy-MM-dd HH:mm:ss.SSS} [%p] %m</pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="10MB" />
</Policies>
<DefaultRolloverStrategy max="10" />
</RollingFile>
这是不正确的,因为这每天最多最多保存十个文件,但是我总共希望最多保存十个文件。所以很明显,十天后我发现多达100个文件。我想将最大文件总数限制为10个。我该怎么办?
答案 0 :(得分:0)
请参阅http://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender中记录的DefaultRolloverStrategy的Delete操作。简而言之,您想要的是
<DefaultRolloverStrategy max="10">
<Delete basePath="./logs">
<IfFileName glob="*/logs-*.log" />
<IfAccumulatedFileCount exceeds="10" />
</Delete>
</DefaultRolloverStrategy>
我还应该指出,由于您没有基于时间的过渡策略,因此filePattern中的日期将始终包含配置Log4j的时间,并且索引将不断递增。您需要添加TimeBasedTriggeringPolicy或CronTriggeringPolicy才能每天更改日期。