这两天闹得沸沸扬扬的Log4j2漏洞事件如火如荼:突发!ApacheLog4j2报告核弹级漏洞。.快点修好!!如果您使用的是Log4j1.x、Logback或其他日志记录框架,那么这次您可以幸免。不用说,Log4j1.x是个古董,就是传说中的老日志框架“Log4j”,曾经无处不在,现在已经很少有人用了,除非在一些老系统里,新项目基本都是Log4j2.x和登录也是如此。Log4j2.x是Log4j1.x的升级版,有了很大的改进,吸取了Logback中优秀的设计并进行了优化,现在更多了。Logback也是由Log4j的作者开发的。它具有更多功能,是Log4j1.x的替代品。Log4j2.x用的比较多,一是因为它是Apache的顶级项目,二是因为它的异步日志性能牛逼:更多性能对比参考:https://logging.apache.org/lo...可见两者都是异步模式。当线程数不断增加时,Log4j2.x的性能打败了Log4j1.x和Logback,Logback和Log4j不相上下。单论性能,Log4j2.x无疑是日志框架中的王者,但Logback也不甘示弱。Logback作为SpringBoot中默认的日志框架,也得到了广泛的应用。如图所示,如果我们不指定任何其他日志Starter,默认就是Logback。它是从SpringBoot的默认依赖中带出来的。更多信息请参考栈管理员在公众号Java技术栈分享的《Spring Boot 自定义日志教程》。很多fans都说用Logback,但是躺不下来。可能是因为他们使用了SpringBoot的默认日志配置。SpringBoot一时灵动?为什么Logback可以成为SpringBoot默认的日志记录框架?在我看来,主要原因是Logback是原生SLF4JAPI(目前最主流的日志门面接口)的实现,可以方便的切换到其他日志框架,但是Log4j并不是原生实现,他们需要一个与SLF4JAPI层结合时的中间适配。这个可以参考一张国外的图片:来源:https://krishankantsinghal.me...SLF4J接口的直接原生实现是Logback,但是也可以通过对接Log4j等其他非原生日志框架中间适配层。你明白吗?如何选择Log4j2.x与Logback?从上面的性能图来看,当并发写入达到4线程/秒以上时,Log4j开始碾压Logback。所以,如果日志量大,有性能要求,那么Log4j2.x无疑是首选,否则用什么无所谓,就是对日志没有性能要求,速度快日志记录不会影响系统的正常运行。毕竟,Logback是SLF4J原生支持的,通用系统完全够用。漏洞是不可避免的。Linux和Tomcat通常存在严重的漏洞。我们仍然需要使用它们。反之,Log4j2.x也是如此。不要因为一个框架中的漏洞而立即切换到另一个框架。可能其他框架也有漏洞,但不是就这么爆发出来的。话不多说,最后还是stackmanager又通知了,如果还没有修好,还是尽快处理吧:爆!ApacheLog4j2报告核弹级漏洞。.快点修好!!好了,今天的分享就到这里。稍后栈长会分享更多有趣的Java技术和最新的技术资料。关注公众号Java技术栈第一时间推送。我也会分享主流的Java面试题和参考答案。全部搞定后在公众号后台回复关键词“面试”刷题。版权声明:本文为公众号《Java技术栈》原创,原创不易,转载或引用本文内容请注明出处,抄袭者一律举报+投诉,并保留追究权利法律责任。近期热点文章推荐:1.1,000+Java面试题及答案(2021最新版)2.别在满屏的if/else中,试试策略模式,真的很好吃!!3.操!Java中xx≠null的新语法是什么?4、SpringBoot2.6正式发布,一大波新特性。.5.《Java开发手册(嵩山版)》最新发布,赶快下载吧!感觉不错,别忘了点赞+转发!
