高性能日志框架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的新特性
丢数据这种情况少,可以用来做审计功能。而且自身内部报的exception会被发现,但是logback和log4j不会。
log4j2使用了disruptor技术,在多线程环境下,性能高于logback等10倍以上。
(garbage free)之前的版本会产生非常多的临时对象,会造成GC频繁,log4j2则在这方面上做了优化,减少产生临时对象。尽可能少的GC
利用插件系统,使得扩展新的appender,filter,layout等变得容易,log4j不可以扩展 插件????
因为插件系统的简单性,所以在配置的时候,可以不用具体指定所要处理的类型。class
可以自定义level
Java 8 lambda support for lazy logging
Support for Message objects
对filter的功能支持的更强大
系统日志(Syslog)协议supports both TCP and UDP
利用jdk1.5并发的特性,减少了死锁的发生。
Socket LogEvent SerializedLayout
支持kafka queue
具体如何使用,太简单了,一搜就搜出来的
以上是关于高性能日志框架log4j2的介绍的主要内容,如果未能解决你的问题,请参考以下文章
最牛逼 Java 日志框架 — Log4j2,性能无敌,横扫对手.....
Spring Boot 2 中如何使用 Log4j2 记录日志