log4j2的简介及基础配置
程序员文章站
2022-05-24 15:44:23
...
资源链接
log4j2的官网地址
log4j2的API
码云源码
log4j2的简介
Log4j使用如下图所示的类。
使用Log4j 2 API的应用程序将请求日志管理器中带有特定名称的日志记录器。LogManager将定位适当的日志上下文,然后从它获得日志记录器。这使得新的Log4j 2.0版本有了大幅的性能提升、新的插件系统,以及配置设置方面的很多改善。Log4j 1.x 在高并发情况下出现死锁导致cpu使用率异常飙升,而Log4j2.0基于LMAX Disruptor的异步日志在多线程环境下性能会远远优于Log4j 1.x和logback。
Log4j的使用
添加pom依赖
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.10.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.10.0</version>
</dependency>
添加log4j2.xml配置文件
注意了,这里是log4j2.xml而不是log4j.xml,这也是log4j2在配置文件方面与log4j最不同的地方,两者不能混淆,否则会报出找不到配置文件的问题。
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %5p %t %-5l - %m%n"/>
</Console>
<!--
fileName:指定日志的所在位置以及日志名称
filePattern:指定备份的日志所在位置以及名称
-->
<RollingFile name="RollingFile" fileName="F:/logs/log4j2-xml.log" filePattern="F:/logs/log4j2-xml-$${date:yyyy-MM}/log4j2-xml-%d{yyyy-MM-dd}-%i.log.gz">
<!--输出的日志数据格式-->
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %5p %t %-5l - %m%n"/>
<!--设置日志文件大小,当超过5M时,触发日志备份操作-->
<SizeBasedTriggeringPolicy size="5 MB" />
</RollingFile>
</appenders>
<loggers>
<root level="trace">
<appender-ref ref="Console"/>
<appender-ref ref="RollingFile"/>
</root>
</loggers>
</configuration>
配置文件中详细的标签我已经在代码备注上填写完整了,所以说这里就直接略过。
添加Log4j2Test测试代码
package com.lyc.log4j2;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.junit.Test;
public class Log4j2Test {
private static final Logger log = LogManager.getLogger(Log4j2Test.class);
@Test
public void test(){
for(int i = 0;i < 200000;i ++){
log.info("这里是在控制台中输出的信息。");
}
}
}
运行结果
上述代码的意思是log4j2在运行代码时将日志信息记录在log4j2-xml.log日志文件中,这里我在测试代码中特意执行了200000次,目的就是为了让其生成比较大的日志文件,在log4j2.xml的配置文件中,我们已经将其日志文件的最大上限通过SizeBasedTriggeringPolicy标签限制在了5M,这样,多余的日志信息就会被记录到相应的压缩包中,该压缩包的所在位置以及文件名称由RollingFile标签中的filePattern属性所作出规定,所以说运行后的结果如下所示: