log4j异步打印日志
介绍: 打印日志是程序开发中的常见操作,我们可以通过日志查看程序的运行状态和错误信息等,但如果我们一次打印的日志过多,那么线程将会被阻塞无法执行打印日志过后的操作,这就导致的程序的响应时间过久,体验感不好,因此我们需要对其进行优化。
举个简单的例子来看看
这里我们打印100000条数据
查看日志文件中的信息
可以发现打印100000条数据需要1秒多的时间
采用异步的方式打印日志
引入依赖
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.4.2</version>
</dependency>
修改log4j的配置文件 (没有配置文件的请看上一篇文章 log4j包依赖冲突 )
在启动类的main方法中设置异步加载
System.setProperty("Log4jContextSelector",
"org.apache.logging.log4j.core.async.AsyncLoggerContextSelector");
再次测试controller中的方法
可以看到打印100000条数据从原来的花费 1s 多的时间经过优化后,只需要 95ms ,通过异步的方式打印效率的提升是显而易见的。
555
555
555
555