温馨提示×

log4j2怎么自动删除整个目录

小亿
128
2023-09-16 10:46:33
栏目: 编程语言

在log4j2中,要自动删除整个目录,你可以使用log4j2的插件"Delete"。下面是一个示例配置文件,展示了如何使用"Delete"插件来自动删除目录。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
<Properties>
<Property name="logDir">logs</Property>
</Properties>
<Appenders>
<RollingFile name="RollingFile" fileName="${logDir}/app.log"
filePattern="${logDir}/app-%d{MM-dd-yy-HH-mm}.log.gz">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
<DefaultRolloverStrategy>
<Delete basePath="${logDir}">
<IfFileName glob="app-*.log.gz" />
<IfLastModified age="7d" />
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>

在上述示例中,appender “RollingFile” 使用了时间触发策略(TimeBasedTriggeringPolicy),每隔一分钟滚动生成一个新的日志文件。同时,使用了默认的滚动策略(DefaultRolloverStrategy),其中包含了"Delete"插件。

在"Delete"插件中,配置了<IfFileName glob="app-*.log.gz" />来匹配所有以"app-“开头,以”.log.gz"结尾的文件。同时,配置了<IfLastModified age="7d" />来定义文件最后修改时间,如果超过7天,就会被删除。

请根据你的需求修改配置文件中的目录路径和其他参数。

0