gpt4 book ai didi

java - 除了使用 MaxBackupIndex 之外,我们还可以删除 log4j 中早于特定天数的日志吗

转载 作者:行者123 更新时间:2023-11-30 06:52:55 25 4
gpt4 key购买 nike

我在我的应用程序中使用 log4j,并且日志是使用此框架生成的。

我想删除超过 10 天的日志,因为日志大小正在迅速增加。

我知道 MaxFileSize 和 MaxBackupIndex 通常会根据生成的文件数量进行删除,但我的要求是删除早于特定天数的日志。我们在 log4j 中是否有任何选项可以实现此目的,或者我们是否需要使用如下所示的一些 unix 脚本并清除日志?

find -type f -mtime +7 -exec rm -f {} \;

谢谢哈沙 GNS

最佳答案

Log4j2 支持custom Delete action在翻转配置中。这应该正是您正在寻找的。

下面是一个示例配置,它使用 RollingFileAppender 并将 cron 触发策略配置为每天午夜触发。文件存储在基于当前年份和月份的目录中。基本目录下与 "*/app-*.log.gz" glob 匹配且 60 天或更早的所有文件都会在翻转时删除:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Properties>
<Property name="baseDir">logs</Property>
</Properties>
<Appenders>
<RollingFile name="RollingFile" fileName="${baseDir}/app.log"
filePattern="${baseDir}/$${date:yyyy-MM}/app-%d{yyyy-MM-dd}.log.gz">
<PatternLayout pattern="%d %p %c{1.} [%t] %m%n" />
<CronTriggeringPolicy schedule="0 0 0 * * ?"/>
<DefaultRolloverStrategy>
<Delete basePath="${baseDir}" maxDepth="2">
<IfFileName glob="*/app-*.log.gz" />
<IfLastModified age="60d" />
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>

关于java - 除了使用 MaxBackupIndex 之外,我们还可以删除 log4j 中早于特定天数的日志吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42408315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com