Logback 对比 Log4j2

测试分为本地测试端和服务器端,分别对gateway网关进行日志输出的压测

同步日志,不打印日志

logback(150并发,0间隔,循环50次)

Logback 对比 Log4j2

Logback 对比 Log4j2

log4j2(150并发,0间隔,循环50次)

Logback 对比 Log4j2

Logback 对比 Log4j2

同步日志,打印日志(大小4k,循环输出100次)

logback(150并发,0间隔,循环50次)

Logback 对比 Log4j2

Logback 对比 Log4j2

log4j2(150并发,0间隔,循环50次)

Logback 对比 Log4j2

Logback 对比 Log4j2

异步打印日志(大小4k,循环输出100次,仅输出文件)

logback(150并发,0间隔,循环50次)

Logback 对比 Log4j2

Logback 对比 Log4j2

log4j2(150并发,0间隔,循环50次)

Logback 对比 Log4j2

Logback 对比 Log4j2

测试环境

logback(50并发,0间隔,循环20次)

不打印日志

Logback 对比 Log4j2

打印日志

Logback 对比 Log4j2

log4j2(50并发,0间隔,循环20次)

不打印日志

Logback 对比 Log4j2

打印日志

Logback 对比 Log4j2

打印日志每条30k输出1000次(一次请求30M)

log4j2(50并发,0间隔,循环20次)

Logback 对比 Log4j2

Logback 对比 Log4j2

logback(50并发,0间隔,循环20次)

Logback 对比 Log4j2

Logback 对比 Log4j2

测试结果

对比响应时间

本地测试log4j2完爆logback(网关给的是2G堆内存)但是还是以测试环境为准:

  1. 在不输出日志和仅输出400k日志的情况下log4j2的99%,95%相比logback的耗时都有所减少;
  2. 同样开启异步日志的情况下输出30m日志的99%与95%差距在10倍以上.

对比jvm

对比30M日志输出时的JVM情况:

  1. logback进行了大量的YCG去清理临时的临时变量,而log4j2的变化相对稳定;
  2. logback的在异步处理的时候使用的是阻塞队列,日志输出量大导致写盘时间长队列堆积大使得处理日志时间过长;
  3. 对比线程变化logback线程相对变化大于log4j2.

总结

  1. 在线上环境关闭控制台输出会对性能有所提升;
  2. 相同情况下对比,log4j2性能更优;
  3. 在对日志输出场景比较多的情况下可以考虑将logback更换为log4j2;

附录

附录一 : logback vs log4j2

Logback 对比 Log4j2

附录二 : Sync vs Async

Logback 对比 Log4j2

附录三:log4j2特性

Logback 对比 Log4j2

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-12-27
  • 2021-07-16
  • 2022-12-23
  • 2021-05-06
  • 2022-02-05
猜你喜欢
  • 2021-06-07
  • 2022-01-02
  • 2021-11-13
  • 2022-12-23
  • 2021-09-29
相关资源
相似解决方案