这两天满城风雨的 Log4j2 破绽门事件炒得热气腾腾:
突发!Apache Log4j2 报核弹级破绽。。连忙修复!!
如果你应用的是 Log4j 1.x、Logback 或者其余日志框架,这次就能够幸免于难。
Log4j 1.x 就不用说了,这是老古董了,也就是传说中的老牌日志框架 “Log4j“,已经无处不在,当初很少用到了,除非在一些老零碎中,新我的项目根本都是 Log4j 2.x 和 Logback 了。
Log4j 2.x 就是对 Log4j 1.x 的降级,失去了重大改良,并且吸引了 Logback 中的优良设计并加以优化,当初得比拟多。
Logback 同样也是 Log4j 的作者开发的,领有更多丰盛的个性,是 Log4j 1.x 的代替。
Log4j 2.x 用得比拟多,一是因为它是 Apache 顶级我的项目,二是因为它牛逼的异步日志记录性能:
更多性能比照参考:
https://logging.apache.org/lo…
能够看到,同样都是异步模式,当线程一直增多时,Log4j 2.x 的性能吊打 Log4j 1.x 和 Logback,Logback 和 Log4j 则并驾齐驱。
单从性能来说,Log4j 2.x 无疑是日志框架中的王者,但 Logback 也不甘上风,它凭借作为 Spring Boot 中的默认日志框架,Logback 也失去大量利用。
如图,如果咱们没有指定任何其余日志 Starter,默认的就是 Logback。
它是从 Spring Boot 默认依赖中带进去的,更多能够看栈长在公众号 Java 技术栈分享过的《Spring Boot 自定义日志教程》。
很多粉丝说用的 Logback,没有躺枪,可能也是因为应用了 Spring Boot 默认的日志配置吧,Spring Boot 机智了一回?
为什么 Logback 能成为 Spring Boot 的默认日志框架?
集体认为,次要起因是因为 Logback 是原生 SLF4J API(目前最支流的日志门面接口)的实现,能够很轻松的切换到其余日志框架,而 Log4j 并非原生实现,它们联合 SLF4J API 都须要一个两头适配层。
这个可在参考一张国外的图:
起源:https://krishankantsinghal.me…
SLF4J 接口的间接原生实现是 Logback,但也能够通过两头适配层连贯 Log4j 等其余非原生实现的日志框架,你看明确了吗?
Log4j 2.x vs Logback 怎么选?
从下面的性能图来看,Log4j 在并发写达到 4 个线程 / 秒及以上,性能就开始碾压 Logback 了。
所以,如果日志量很大,对性能又有要求,那么 Log4j 2.x 无疑是首选 ,否则用啥都无所谓,即对日志记录没有性能要求,日志记录的快慢不会影响零碎失常运行,毕竟 Logback 是 SLF4J 原生反对,个别的零碎齐全足够应答了。
破绽是不可避免的,Linux、Tomcat 也常常爆重大破绽,咱们仍然要用,反过来,Log4j 2.x 也是如此,不要因为一个框架呈现破绽就马上换其余框架, 兴许其余框架也有破绽,只是没有爆进去而已。
不多说了,最初,栈长再告诉一次,没修复的,尽快了:
突发!Apache Log4j2 报核弹级破绽。。连忙修复!!
好了,明天的分享就到这里了,前面栈长会分享更多好玩的 Java 技术和最新的技术资讯,关注公众号 Java 技术栈第一工夫推送,我也将支流 Java 面试题和参考答案都整顿好了,在公众号后盾回复关键字 “ 面试 ” 进行刷题。
版权申明: 本文系公众号 “Java 技术栈 ” 原创,原创实属不易,转载、援用本文内容请注明出处,剽窃者一律举报+投诉,并保留追究其法律责任的权力。
近期热文举荐:
1.1,000+ 道 Java 面试题及答案整顿 (2021 最新版)
2. 别在再满屏的 if/ else 了,试试策略模式,真香!!
3. 卧槽!Java 中的 xx ≠ null 是什么新语法?
4.Spring Boot 2.6 正式公布,一大波新个性。。
5.《Java 开发手册(嵩山版)》最新公布,速速下载!
感觉不错,别忘了顺手点赞 + 转发哦!