高性能日志框架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的介绍的主要内容,如果未能解决你的问题,请参考以下文章