使用这个的初衷是因为在做自己的一个小的netty服务端的时候,用Jmeter压测了一下,结果发现并发数大了之后返回数据特别慢,最后排查是由于日志打印比较大数据(我有一个数据7万多的字节),因此采用log4j2的异步日志处理。
一、所需要jar:
disruptor-3.0.0.jar
log4j-api-2.3.jar
log4j-core-2.3.jar
二、配置文件
pom.xml:
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.3</version>
</dependency>
由于服务器只支持jdk1.6,所以只能采用较低的版本
classpath:(这个位置不用多说,可以放在src目录下,也可以在src同级目录建一个resources目录放置)
log4j2.xml(这个网上有很多资料,就不在这献丑了)
log4j2.component.properties(异步)
Log4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
三、测试
使用:
private static Logger log = LogManager.getLogger(BusinessThreadUtil.class);
public void test(){
log.info("log print");//同1.x使用
System.out.println("console print");
}
四、运行结果
如果跟这个相同,说明异步生效。