我在RollingFileAppender中使用了基于TimeBased的触发策略。
在manual中说:
根据最具体的时间单位进行翻转的频率 在日期模式
最具体的时间单位是什么?它是第一个还是最后一个参数? 我希望文件每周翻转一次。
这是我的代码:
<RollingFile name="RollingFile" fileName="${baseDir}/giba.log" filePattern="${baseDir}/giba-%d{w}-%i.log">
<PatternLayout pattern="%d{dd.MM.yyyy HH:mm:ss.SSS} [%t] %-5level - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="7" modulate="true" />
</Policies>
<DefaultRolloverStrategy>
<Delete basePath="${baseDir}" maxDepth="0">
<IfFileName glob="*.log" />
<IfLastModified age="7d" />
</Delete>
</DefaultRolloverStrategy>
</RollingFile >
答案 0 :(得分:2)
大多数特定时间单位意味着最小。您的文件模式使用&#39; w&#39;所以它会每周滚动。但是,您的间隔为7,这意味着您希望文件在该周内翻转7次。
坦率地说,我想弃用TimeBasedRolloverStrategy。这是令人困惑的,只能确定它是否应该作为编写日志事件的一部分滚动。 CronTriggeringPolicy使用cron表达式,因此根本不依赖于文件模式。它也是从调度程序线程驱动的,因此无论是否记录任何内容都会发生。