log4j异步打印日志

guardyou3
2023-10-16 / 6 评论 / 138 阅读 / 正在检测是否收录...

log4j异步打印日志

介绍: 打印日志是程序开发中的常见操作,我们可以通过日志查看程序的运行状态和错误信息等,但如果我们一次打印的日志过多,那么线程将会被阻塞无法执行打印日志过后的操作,这就导致的程序的响应时间过久,体验感不好,因此我们需要对其进行优化。

举个简单的例子来看看
这里我们打印100000条数据

lnsk4vve.png
查看日志文件中的信息
lnsk798s.png
可以发现打印100000条数据需要1秒多的时间


采用异步的方式打印日志
引入依赖

  <dependency>
      <groupId>com.lmax</groupId>
      <artifactId>disruptor</artifactId>
      <version>3.4.2</version>
  </dependency>

修改log4j的配置文件 (没有配置文件的请看上一篇文章 log4j包依赖冲突
lnskr2ab.png
在启动类的main方法中设置异步加载
lnyd7bp2.png

System.setProperty("Log4jContextSelector",
                "org.apache.logging.log4j.core.async.AsyncLoggerContextSelector");

再次测试controller中的方法
lnskudjm.png
可以看到打印100000条数据从原来的花费 1s 多的时间经过优化后,只需要 95ms ,通过异步的方式打印效率的提升是显而易见的。

0

评论 (6)

取消
  1. 头像
    1
    Windows 10 · Google Chrome

    画图

    回复
  2. 头像
    1
    Windows 10 · Google Chrome

    555

    回复
  3. 头像
    1
    Windows 10 · Google Chrome

    555

    回复
  4. 头像
    1
    Windows 10 · Google Chrome

    画图

    回复
  5. 头像
    1
    Windows 10 · Google Chrome

    555

    回复
  6. 头像
    1
    Windows 10 · Google Chrome

    555

    回复