说明
在log4j2中,可以通过配置RollingFileAppender
的清理策略来实现自动清理日志,具体可以参照官网中对RollingFileAppender配置文件的介绍:https://logging.apache.org/log4j/2.x/manual/appenders.html#FileAppender。
另外,log4j1中的RollingFileAppender虽然无法实现自动清理日志的功能,但可以通过自己定义Appender来实现,可参照:log4j自动日志删除(转)
样例
可以通过一个简单的样例来查看log4j2的自动清理日志功能,操作步骤如下:
使用Maven新建项目,可以命名为
log4j2_demo
。-
完善pom.xml,加入对log4j2的依赖及编译器插件。(注:log4j2在2.3及以前版本支持JDK1.6,2.3之后的版本需要JDK1.7)
<properties> <log4j2.version>2.7</log4j2.version> </properties> <dependencies> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>${log4j2.version}</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>${log4j2.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </build>
-
在src/main/java目录下新建类
Demo
,用于不断产生日志,Demo.java内容如下:import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class Demo { private static final Logger logger = LogManager.getLogger(); public static void main(String[] args) { while (true) { logger.trace("trace level"); logger.debug("debug level"); logger.info("info level"); logger.warn("warn level"); logger.error("error level"); logger.fatal("fatal level"); } } }
-
在src/main/resource下创建log4j2的配置文件
log4j2.xml
,写入配置,内容如下:<?xml version="1.0" encoding="UTF-8"?> <Configuration status="warn"> <Properties> <Property name="baseDir">logs</Property> </Properties> <Appenders> <RollingFile name="RollingFile" fileName="${baseDir}/app.log" filePattern="${baseDir}/$${date:dd日hh时}/app-%d{mm分ss秒}.log.gz"> <PatternLayout pattern="%d %p %c{1.} [%t] %m%n" /> <CronTriggeringPolicy schedule="* * * * * ?"/> <DefaultRolloverStrategy> <Delete basePath="${baseDir}" maxDepth="2"> <IfFileName glob="*/app-*.log.gz" /> <IfLastModified age="5s" /> </Delete> </DefaultRolloverStrategy> </RollingFile> </Appenders> <Loggers> <Root level="all"> <AppenderRef ref="RollingFile"/> </Root> </Loggers> </Configuration>
运行Demo类,可以看到在项目路径下的
logs
文件夹中,每秒都会产生一个日志文件,并且每隔秒都会自动删除上一次修改在5s前的日志。