log4j2 定期清理日志文件
log4j2 periodically cleaning log file
我使用 log4j2 来记录我的程序。在我的 xml 配置文件中,我有这个附加程序:
<RollingFile name="General" fileName="log/logs/giornale.log" filePattern="log/logs/log-%d{yyyyMMdd}.log">
<PatternLayout>
<Pattern>%d{HH:mm:ss,SSS} [%t] %-5level %logger{-1} - %msg%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
</Policies>
</RollingFile>
我需要的是一种配置它的方法,以便它自动删除所有超过 n 天的文件。
我已经发现了一些问题,例如 this,但它们没有帮助,因为它们没有说明如何通过 xml 配置来做到这一点。
简而言之,在上面的代码片段中,我应该在哪里指示像 "MaxBackupIndex" 这样的参数?或者我应该使用哪个其他参数(我可以把它放在哪里)?
在 'RollingFile' 标签下添加以下标签。删除 'policies' 标签。你可能不需要它。
<DefaultRolloverStrategy>
<Delete basePath="log/logs" maxDepth="2">
<IfLastModified age="60d" />
</Delete>
</DefaultRolloverStrategy>
使用此配置,超过 60 天的日志将为 auto-deleted。
参考log4j2 docs了解更多配置信息。
您可以将 DefaultRolloverStrategy 添加到您的 xml 作为 -
<RollingFile name="General" fileName="log/logs/giornale.log" filePattern="log/logs/log-%d{yyyyMMdd}.log">
<PatternLayout>
<Pattern>%d{HH:mm:ss,SSS} [%t] %-5level %logger{-1} - %msg%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
</Policies>
<DefaultRolloverStrategy max="<specify maximum archive count>"/>
</RollingFile>
您也可以结合使用基于时间和大小的日志翻转 -
<Policies>
<TimeBasedTriggeringPolicy interval="6" modulate="true"/>
<SizeBasedTriggeringPolicy size="250 MB"/>
</Policies>
..a sample configuration that uses a RollingFileAppender with both the
time and size based triggering policies, will create up to 7 archives
on the same day (1-7) that are stored in a directory based on the
current year and month, and will compress each archive using gzip and
will roll every 6 hours when the hour is divisible by 6
我使用 log4j2 来记录我的程序。在我的 xml 配置文件中,我有这个附加程序:
<RollingFile name="General" fileName="log/logs/giornale.log" filePattern="log/logs/log-%d{yyyyMMdd}.log">
<PatternLayout>
<Pattern>%d{HH:mm:ss,SSS} [%t] %-5level %logger{-1} - %msg%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
</Policies>
</RollingFile>
我需要的是一种配置它的方法,以便它自动删除所有超过 n 天的文件。
我已经发现了一些问题,例如 this,但它们没有帮助,因为它们没有说明如何通过 xml 配置来做到这一点。
简而言之,在上面的代码片段中,我应该在哪里指示像 "MaxBackupIndex" 这样的参数?或者我应该使用哪个其他参数(我可以把它放在哪里)?
在 'RollingFile' 标签下添加以下标签。删除 'policies' 标签。你可能不需要它。
<DefaultRolloverStrategy>
<Delete basePath="log/logs" maxDepth="2">
<IfLastModified age="60d" />
</Delete>
</DefaultRolloverStrategy>
使用此配置,超过 60 天的日志将为 auto-deleted。
参考log4j2 docs了解更多配置信息。
您可以将 DefaultRolloverStrategy 添加到您的 xml 作为 -
<RollingFile name="General" fileName="log/logs/giornale.log" filePattern="log/logs/log-%d{yyyyMMdd}.log">
<PatternLayout>
<Pattern>%d{HH:mm:ss,SSS} [%t] %-5level %logger{-1} - %msg%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
</Policies>
<DefaultRolloverStrategy max="<specify maximum archive count>"/>
</RollingFile>
您也可以结合使用基于时间和大小的日志翻转 -
<Policies>
<TimeBasedTriggeringPolicy interval="6" modulate="true"/>
<SizeBasedTriggeringPolicy size="250 MB"/>
</Policies>
..a sample configuration that uses a RollingFileAppender with both the time and size based triggering policies, will create up to 7 archives on the same day (1-7) that are stored in a directory based on the current year and month, and will compress each archive using gzip and will roll every 6 hours when the hour is divisible by 6