ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

log4j2 自动删除日志目录及文件

2022-02-24 21:02:13  阅读:261  来源: 互联网

标签:配置文件 删除 maxDepth action 日志 log4j2 目录 logs


原因:

通常的log4j2配置文件如下,注意delete插件这个element,一般只是展示一个配置

现象:

这样的配置就会出现一个问题,具体日志文件的上父目录没有被删除

<?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="P60D" />
        </Delete>
      </DefaultRolloverStrategy>
    </RollingFile>
  </Appenders>
  <Loggers>
    <Root level="error">
      <AppenderRef ref="RollingFile"/>
    </Root>
  </Loggers>
</Configuration>

原因:

但查看org.apache.logging.log4j.core.appender.rolling.DefaultRolloverStrategy#createStrategy这个函数

由于配置文件被解析后,通过该函数进行构建对应的strategy,入参函数action是一个数组,所以可以传递多个action行为。

解决办法:

如果需要删除basePath下的由log4j2按年月日自动生成的目录,需要再指定一个action,并且他的maxDepth为basePath到该目录的层级数,以上面配置为例,则maxDepth为1

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <Configuration status="warn" name="MyApp" packages="">
 3   <Properties>
 4     <Property name="baseDir">logs</Property>
 5   </Properties>
 6   <Appenders>
 7     <RollingFile name="RollingFile" fileName="${baseDir}/app.log"
 8           filePattern="${baseDir}/$${date:yyyy-MM}/app-%d{yyyy-MM-dd}.log.gz">
 9       <PatternLayout pattern="%d %p %c{1.} [%t] %m%n" />
10       <CronTriggeringPolicy schedule="0 0 0 * * ?"/>
11       <DefaultRolloverStrategy>
12         <Delete basePath="${baseDir}" maxDepth="2">
13           <IfFileName glob="*/app-*.log.gz" />
14           <IfLastModified age="P60D" />
15         </Delete>
16         <Delete basePath="${baseDir}" maxDepth="1">
17           <IfLastModified age="P60D" />
18         </Delete>
19       </DefaultRolloverStrategy>
20     </RollingFile>
21   </Appenders>
22   <Loggers>
23     <Root level="error">
24       <AppenderRef ref="RollingFile"/>
25     </Root>
26   </Loggers>
27 </Configuration>

 

标签:配置文件,删除,maxDepth,action,日志,log4j2,目录,logs
来源: https://www.cnblogs.com/guangyou-91/p/15933525.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有