Apache Log4j 爆核弹级漏洞,Spring Boot 默认日志框架就能完美躲过。。。

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 突发!Apache Log4j2 报核弹级漏洞。。赶紧修复!!如果你使用的是 Log4j 1.x、Logback 或者其他日志框架,这次就可以幸免于难。

这两天沸沸扬扬的 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 顶级项目,二是因为它牛逼的异步日志记录性能:


image.png


更多性能对比参考:


https://logging.apache.org/log4j/2.x/performance.html


可以看到,同样都是异步模式,当线程不断增多时,Log4j 2.x 的性能吊打 Log4j 1.x 和 Logback,Logback 和 Log4j 则不相上下。


单从性能来说,Log4j 2.x 无疑是日志框架中的王者,但 Logback 也不甘下风,它凭借作为 Spring Boot 中的默认日志框架,Logback 也得到大量应用。


image.png


如图,如果我们没有指定任何其他日志 Starter,默认的就是 Logback。


image.png


它是从 Spring Boot 默认依赖中带出来的,更多可以看栈长在公众号Java技术栈分享过的《Spring Boot 自定义日志教程》。


很多粉丝说用的 Logback,没有躺枪,可能也是因为使用了 Spring Boot 默认的日志配置吧,Spring Boot 机智了一回?


为什么 Logback 能成为 Spring Boot 的默认日志框架?


个人认为,主要原因是由于 Logback 是原生 SLF4J API(目前最主流的日志门面接口) 的实现,可以很轻松的切换到其他日志框架,而 Log4j 并非原生实现,它们结合 SLF4J API 都需要一个中间适配层。


这个可在参考一张国外的图:


image.png


来源:https://krishankantsinghal.medium.com/logback-slf4j-log4j2-understanding-them-and-learn-how-to-use-d33deedd0c46


SLF4J 接口的直接原生实现是 Logback,但也可以通过中间适配层连接 Log4j 等其他非原生实现的日志框架,你看明白了吗?


Log4j 2.x vs Logback 怎么选?


从上面的性能图来看,Log4j 在并发写到达 4 个线程/秒及以上,性能就开始碾压 Logback 了。


所以,如果日志量很大,对性能又有要求,那么 Log4j 2.x 无疑是首选,否则用啥都无所谓,即对日志记录没有性能要求,日志记录的快慢不会影响系统正常运行,毕竟 Logback 是 SLF4J 原生支持,一般的系统完全足够应对了。


漏洞是不可避免的,Linux、Tomcat 也经常爆严重漏洞,我们依然要用,反过来,Log4j 2.x 也是如此,不要因为一个框架出现漏洞就马上换其他框架,也许其他框架也有漏洞,只是没有爆出来而已。


不多说了,最后,栈长再通知一次,没修复的,尽快了:


突发!Apache Log4j2 报核弹级漏洞。。赶紧修复!!



相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
26天前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
182 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
2月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
259 3
|
8天前
|
消息中间件 Java Kafka
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
17 1
|
19天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
35 2
|
2月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
60 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
2月前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1661 14
|
2月前
|
存储 数据挖掘 数据处理
Apache Paimon 是一款高性能的数据湖框架,支持流式和批处理,适用于实时数据分析
【10月更文挑战第8天】随着数据湖技术的发展,越来越多企业开始利用这一技术优化数据处理。Apache Paimon 是一款高性能的数据湖框架,支持流式和批处理,适用于实时数据分析。本文分享了巴别时代在构建基于 Paimon 的 Streaming Lakehouse 的探索和实践经验,包括示例代码和实际应用中的优势与挑战。
89 1
|
2月前
|
Python
log日志学习
【10月更文挑战第9天】 python处理log打印模块log的使用和介绍
35 0
|
2月前
|
数据可视化
Tensorboard可视化学习笔记(一):如何可视化通过网页查看log日志
关于如何使用TensorBoard进行数据可视化的教程,包括TensorBoard的安装、配置环境变量、将数据写入TensorBoard、启动TensorBoard以及如何通过网页查看日志文件。
231 0
|
2月前
|
数据挖掘 物联网 数据处理
深入探讨Apache Flink:实时数据流处理的强大框架
在数据驱动时代,企业需高效处理实时数据流。Apache Flink作为开源流处理框架,以其高性能和灵活性成为首选平台。本文详细介绍Flink的核心特性和应用场景,包括实时流处理、强大的状态管理、灵活的窗口机制及批处理兼容性。无论在实时数据分析、金融服务、物联网还是广告技术领域,Flink均展现出巨大潜力,是企业实时数据处理的理想选择。随着大数据需求增长,Flink将继续在数据处理领域发挥重要作用。
96 0

推荐镜像

更多