繁体   English   中英

除了使用MaxBackupIndex之外,我们是否可以删除log4j中某些日期之前的日志

[英]Can we delete the logs older than certain days in log4j other than using MaxBackupIndex

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

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

我知道MaxFileSize和MaxBackupIndex,它通常根据生成的文件数删除,但我的要求是删除超过特定日期的日志。 我们在log4j中有任何选项吗?或者我们是否需要使用下面的一些unix脚本并清除日志?

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

谢谢Harsha GNS

Log4j2支持翻转配置中的自定义删除操作 这应该是你正在寻找的。

下面是一个示例配置,它使用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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM