行业资讯 2025年08月6日
0 收藏 0 点赞 392 浏览 2214 个字
摘要 :

文章目录 1.Log4j2删除操作 2.保留某些日志并删除其他日志 3.properties属性配置 4.结论 在Log4j2中,使用RollingFileAppender和DefaultRolloverStrategy可以配置“删除……




  • 1.Log4j2删除操作
  • 2.保留某些日志并删除其他日志
  • 3.properties属性配置
  • 4.结论

在Log4j2中,使用RollingFileAppender和DefaultRolloverStrategy可以配置“删除”操作,从而在特定时间后删除旧的日志文件

1.Log4j2删除操作

在log4j2中,RollingFileAppender需要一个TriggeringPolicy和RolloverStrategy。触发策略确定是否应该执行滚动,而滚动策略定义了如何执行滚动。

在Log4j2 2.5之前,DefaultRolloverStrategy的max属性是在滚动时删除日志的唯一选项。例如,每天开始之前,log4j将创建最多10个日志文件(每个20MB)。

<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<Configuration status=\"warn\" name=\"MyApp\" packages=\"\">
  <Appenders>
    <RollingFile name=\"RollingFile\" fileName=\"logs/app.log\"
                 filePattern=\"logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz\">
      <PatternLayout>
        <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
      </PatternLayout>
      <Policies>
        <TimeBasedTriggeringPolicy />
        <SizeBasedTriggeringPolicy size=\"20MB\"/>
      </Policies>
      <DefaultRolloverStrategy max=\"10\"/>
    </RollingFile>
  </Appenders>
  <Loggers>
    <Root level=\"error\">
      <AppenderRef ref=\"RollingFile\"/>
    </Root>
  </Loggers>
</Configuration>

自Log4j2 2.5以来,新的Delete操作使用户可以更好地控制哪些文件在滚动时被删除,以及删除过去生成的其他日志文件。

例如,每天午夜时分,log4j滚动过程将删除基本目录中30天或更老的日志文件。

<DefaultRolloverStrategy>
  <Delete basePath=\"${baseDir}\" maxDepth=\"2\">
    <IfFileName glob=\"*/app-*.log.gz\" />
    <IfLastModified age=\"P30D\" />
  </Delete>
</DefaultRolloverStrategy>

2.保留某些日志并删除其他日志

在某些情况下,我们可能不想删除过去生成的所有日志文件;相反,我们可能希望根据日志文件的大小或数量保留一些旧的日志。

以下配置将删除匹配“/app-.log.gz”的文件,这些文件是30天或更老的,但保留最近的100GB或最近的10个文件,以先到者为准。

<DefaultRolloverStrategy max=\"100\">
  <Delete basePath=\"${baseDir}\" maxDepth=\"2\">
    <IfFileName glob=\"*/app-*.log.gz\">
      <IfLastModified age=\"P30D\">
        <IfAny>
          <IfAccumulatedFileSize exceeds=\"100GB\" />
          <IfAccumulatedFileCount exceeds=\"10\" />
        </IfAny>
      </IfLastModified>
    </IfFileName>
  </Delete>
</DefaultRolloverStrategy>

3.properties属性配置

我们还可以在log4j2.properties文件中以以下方式配置Delete操作:

appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.max = 5
appender.rolling.strategy.action.type = Delete
appender.rolling.strategy.action.basepath = ${baseDir}
appender.rolling.strategy.action.maxdepth = 2
appender.rolling.strategy.action.condition.type = IfLastModified
appender.rolling.strategy.action.condition.age = 30D
appender.rolling.strategy.action.PathConditions.type = IfFileName
appender.rolling.strategy.action.PathConditions.glob = */app-*.log.gz

4.结论

在本简短的Log4j2教程中,我们学习了如何在滚动事件时删除旧日志文件。我们学习了如何根据聚合日志文件的大小和数量删除更旧的日志。我们还学习了如何使用属性文件配置Delete操作。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/9568.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

985
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

463
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

347
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

455
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

515
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

831
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号