下面是一段log4j2日志配置:
<RollingFile name="logger" fileName="${path}/filename.log" filePattern="${path}/%d{yyyyMMdd}/filename.%i.log">
<Filters>
<MarkerFilter marker="" onmatch="NEUTRAL" onMismatch="DENY"/>
<LogMdcFilter useSwitch="true" onmatch="NEUTRAL" onMismatch="DENY"/>
<ThresholdFilter level="info" onmatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<PatternLayout pattern="${COMMON_PATTERN}"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulte="true"/>
<SizeBasedTriggeringPolicy size = "300MB" />
<Policies>
<DefaultRolloverStrategy max="7">
<Delete basePate="${path}" maxDepth="2">
<IfFileName glob="*/filename*.log"/>
<IfLastModified age="5d"/>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
其中配置了滚动策略,比如配置了删除5天前的日志,单个日志文件最大300MB。具体每个参数意义…不想写,等哪天勤快了再更新。
先记录一下需要注意的点:
- 不是项目重启就会清理过期日志文件。当只有上边的滚动策略触发时,才会进行删除不符合策略的日志文件,拿这个配置举例,比如触发时间滚动策略时,也就是在一天后有日志产生时,前一天的日志要存入新的文件夹,这时会删除5天前的过期日志文件。
- 当maxDepth设置的深度是2时,需要注意下边删除规则glob中日志名字前需要加
*/
,表示外一层目录,不加的话日志滚动时不会删除过期日志文件,相反,如果深度是1,删除当前目录时是不需要加的。