高性能日志框架log4j2的介绍

Posted 玩蜂技术中心

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高性能日志框架log4j2的介绍相关的知识,希望对你有一定的参考价值。

       提到java日志框架大家都会第一时间想到log4j,但是你也许不知道log4j从2015开始就宣布了不维护了,本篇文章就向大家介绍更高性能的日志框架log4j2,log4j的第二代。

      

  • 先看看日志框架简单比较(slf4j、log4j、logback、log4j2 )


1.日志接口(slf4j) 

slf4j是对所有日志框架制定的一种规范、标准、接口,并不是一个框架的具体的实现,因为接口并不能独立使用,需要和具体的日志框架实现配合使用(如log4j、logback);


2.日志实现(log4j、logback、log4j2)

  • log4j是apache实现的一个开源日志组件

  • logback同样是由log4j的作者设计完成的,拥有更好的特性,用来取代log4j的一个日志框架,是slf4j的原生实现

  • Log4j2是log4j 1.x和logback的改进版,据说采用了一些新技术(无锁异步、等等),使得日志的吞吐量、性能比log4j 1.x提高10倍,并解决了一些死锁的bug,而且配置更加简单灵活。


具体性能怎么样呢,下面看网友的具体测试情况:

从上如可以看出log4j2的性能明显优于其他两种,所以在此可以推荐使用slf4j+log4j2的组合。


关于log4j2的新特性

  1. 丢数据这种情况少,可以用来做审计功能。而且自身内部报的exception会被发现,但是logback和log4j不会。

  2. log4j2使用了disruptor技术,在多线程环境下,性能高于logback等10倍以上。

  3. (garbage free)之前的版本会产生非常多的临时对象,会造成GC频繁,log4j2则在这方面上做了优化,减少产生临时对象。尽可能少的GC

  4. 利用插件系统,使得扩展新的appender,filter,layout等变得容易,log4j不可以扩展 插件????

  5. 因为插件系统的简单性,所以在配置的时候,可以不用具体指定所要处理的类型。class

  6. 可以自定义level

  7. Java 8 lambda support for lazy logging

  8. Support for Message objects

  9. 对filter的功能支持的更强大

  10. 系统日志(Syslog)协议supports both TCP and UDP

  11. 利用jdk1.5并发的特性,减少了死锁的发生。

  12. Socket LogEvent SerializedLayout

  13. 支持kafka queue


具体如何使用,太简单了,一搜就搜出来的



以上是关于高性能日志框架log4j2的介绍的主要内容,如果未能解决你的问题,请参考以下文章

讲武德,你们要的高性能日志工具 Log4j2,来了

最牛逼 Java 日志框架 — Log4j2,性能无敌,横扫对手.....

Spring Boot 2 中如何使用 Log4j2 记录日志

是时候将日志框架升级到Log4j2了

你还在用 Logback?Log4j2 的异步性能已经无敌了,还不快试试

Log4j2的异步性能已经无敌了,还不快试试