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

简介: 突发!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 报核弹级漏洞。。赶紧修复!!



相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
5230 32
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `<appender>` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `<logger>` 和 `<root>` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
3347 1
|
12月前
|
Prometheus 监控 Java
日志收集和Spring 微服务监控的最佳实践
在微服务架构中,日志记录与监控对系统稳定性、问题排查和性能优化至关重要。本文介绍了在 Spring 微服务中实现高效日志记录与监控的最佳实践,涵盖日志级别选择、结构化日志、集中记录、服务ID跟踪、上下文信息添加、日志轮转,以及使用 Spring Boot Actuator、Micrometer、Prometheus、Grafana、ELK 堆栈等工具进行监控与可视化。通过这些方法,可提升系统的可观测性与运维效率。
948 1
日志收集和Spring 微服务监控的最佳实践
|
Java 微服务 Spring
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录——使用Logger在项目中打印日志
本文介绍了如何在项目中使用Logger打印日志。通过SLF4J和Logback,可设置不同日志级别(如DEBUG、INFO、WARN、ERROR)并支持占位符输出动态信息。示例代码展示了日志在控制器中的应用,说明了日志配置对问题排查的重要性。附课程源码下载链接供实践参考。
1530 0
|
SQL Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— application.yml 中对日志的配置
在 Spring Boot 项目中,`application.yml` 文件用于配置日志。通过 `logging.config` 指定日志配置文件(如 `logback.xml`),实现日志详细设置。`logging.level` 可定义包的日志输出级别,例如将 `com.itcodai.course03.dao` 包设为 `trace` 级别,便于开发时查看 SQL 操作。日志级别从高到低为 ERROR、WARN、INFO、DEBUG,生产环境建议调整为较高级别以减少日志量。本课程采用 yml 格式,因其层次清晰,但需注意格式要求。
1616 0
|
Java API 开发者
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录——slf4j 介绍
在软件开发中,`System.out.println()`常被用于打印信息,但大量使用会增加资源消耗。实际项目推荐使用slf4j结合logback输出日志,效率更高。Slf4j(Simple Logging Facade for Java)是一个日志门面,允许开发者通过统一方式记录日志,无需关心具体日志系统。它支持灵活切换日志实现(如log4j或logback),且具备简洁占位符和日志级别判断等优势。阿里巴巴《Java开发手册》强制要求使用slf4j,以保证日志处理方式的统一性和维护性。使用时只需通过`LoggerFactory`创建日志实例即可。
940 0
|
12月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
1912 5
|
机器学习/深度学习 XML Java
【spring boot logback】日志logback格式解析
在 Spring Boot 中,Logback 是默认的日志框架,它支持灵活的日志格式配置。通过配置 logback.xml 文件,可以定义日志的输出格式、日志级别、日志文件路径等。
2060 5
|
开发框架 运维 监控
Spring Boot中的日志框架选择
在Spring Boot开发中,日志管理至关重要。常见的日志框架有Logback、Log4j2、Java Util Logging和Slf4j。选择合适的日志框架需考虑性能、灵活性、社区支持及集成配置。本文以Logback为例,演示了如何记录不同级别的日志消息,并强调合理配置日志框架对提升系统可靠性和开发效率的重要性。
732 5
|
存储 安全 Java
Spring Boot 3 集成Spring AOP实现系统日志记录
本文介绍了如何在Spring Boot 3中集成Spring AOP实现系统日志记录功能。通过定义`SysLog`注解和配置相应的AOP切面,可以在方法执行前后自动记录日志信息,包括操作的开始时间、结束时间、请求参数、返回结果、异常信息等,并将这些信息保存到数据库中。此外,还使用了`ThreadLocal`变量来存储每个线程独立的日志数据,确保线程安全。文中还展示了项目实战中的部分代码片段,以及基于Spring Boot 3 + Vue 3构建的快速开发框架的简介与内置功能列表。此框架结合了当前主流技术栈,提供了用户管理、权限控制、接口文档自动生成等多项实用特性。
1341 8