JetBrains 宣布:IntelliJ 平台彻底停用 Log4j 组件,建议切换至 java.util.logging

简介: JetBrains 宣布:IntelliJ 平台彻底停用 Log4j 组件,建议切换至 java.util.logging

近日,JetBrains 官方博客发文宣布: IntelliJ 平台将彻底停止使用 Log4j,并建议切换到 java.util.logging 作为标准日志框架。

image.png

JetBrains 方面表示,尽管该平台对日志框架的要求相当低,但仍需要记录到文件和控制台,且须为代码库的不同部分配置日志级别的可能性。而作为 JDK(java.util.logging)一部分的标准日志 API 则涵盖了所有这些要求。

因此,为避免错误安全警报并减少潜在攻击面,JetBrains 官方决定完全停止使用 Log4j,转而使用 java.util.logging 作为标准日志框架(该更改将在 2022.1 版中发布)。

JetBrains 在博文中提到,由于大量第三方插件(直接或间接)使用 Log4j,因此他们将提供 Log4j API 的存根实现,将日志输出重定向到 java.util.logging(取自 SLF4J 项目)。当然,存根暂未完全实现所有方法,因此为了维护插件的全部功能,用户可能需要调整代码以适应新环境。

对此,JetBrains 官方也为用户附上了一些更新建议(检查代码或依赖项是否使用Log4j 以按照以下说明更新代码):

  • 如果您在自己的插件代码中使用 Log4j:切换至使用标准平台日志 API com.intellij.openapi.diagnostic.Logger
  • 如果您在自己的代码中使用 Log4j,且该代码在插件和其他上下文中都使用:请切换至使用 SLF4J API。IntelliJ 平台附带了通过 java.util.logging 实现的 SLF4J API ,因此平台完全支持 SLF4J 日志记录。
  • 如果在代码的依赖项中使用 Log4j:请求依赖项维护者切换至SLF4J。如果该操作无法实现,则通过 Log4j-SLF4J 日志桥来实现,从依赖项进行日志记录则可继续工作。
  • 如果通过 Log4j API 定制使用 SLF4J 依赖项的日志记录,请切换至使用 java.util.logging 配置处理程序和日志级别的日志 API。
  • 如果使用 Log4j xml 文件来配置测试中的日志记录:使用切换到配置使用,如LogManager 文档中描述的属性文件。当使用 IntelliJ 测试框架运行测试时,可以使用 idea.log.config.properties.file 系统属性的路径。

以上这些变更均在即将发布的 221.4165.x EAP 版本里呈现(建议使用这些版本测试插件与平台更改的兼容性)。

众所周知,去年底 Log4j2 中被曝出了几个重大漏洞,随后 JetBrains 官方就宣布称他们使用的是经过修补的 Log4j 1.2 版本,因此基于 IntelliJ 平台的 IDE 不受此漏洞的影响,并删除了所有与网络相关的代码。

image.png

据悉,Log4j 库的版本 1 和 版本 2 是两个完全不同的代码库,由于两者具有不兼容的 API,因此从一个版本迁移到另一个版本实属不易。尽管如此,一些自动化的安全工具仍然将 JetBrains 使用“旧”版本的 Log4j 标记为安全问题。

此次变更,也将彻底断绝用户对于 JetBrains 方面安全问题的担忧。对于此次变更,如果您有哪些观点的话也欢迎在评论区交流互动。

参考链接:https://blog.jetbrains.com/pl...

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
|
3月前
|
Java 数据安全/隐私保护 索引
(Java)Java里JFrame窗体的基本操作(组件篇-3)
回顾 说过了下拉框和下拉列表,本篇内容将了解滚动面板和各类输入框 什么是组件? 如果不熟悉组件,可以将组件看作是某个Form表单中的表单元素,组件可以完善JFrame窗口的布局,以及一些功能; 本篇内容中所有的组件所用到的类全都来自于javax.swing这个包中,记得引入; 另:在使用组件前,请先将窗体中的内容类给实例化出来进行操作,代码如下: Container c = getContentPane(); JScollPane JScollPane类,说的就是滚动面板。它不同于其他组件,它是一个容器,
108 1
|
3月前
|
Java 索引 容器
(Java)Java里JFrame窗体的基本操作(组件篇-2)
回顾 这算是JFrame窗体基本操作的组件第二篇了,上一篇说过了单选框,复选框,按钮。 在这一篇中,我会说明下拉框和列表框 什么是组件? 自行百度:java中JFrame窗体里的组件是什么? 名字都给你想好了 ( :I ) JComBox下拉框 JComBox类,就是下拉框,实例化出来后,要填写泛型<>,添加是什么数据类型的内容,泛型中就写上该数据类型; JComboBox<?> combox = new JComboBox<>(); 以下实例化下拉框的时候我泛型写的全
110 1
|
3月前
|
Java 容器
(Java)Java里JFrame窗体的基础操作(组件-1)
如果不熟悉组件,可以将组件看作是某个Form表单中的表单元素,当然这只是在不熟悉组件的前提下。如果深入了解了组件,那么它有着非常多的组件,这些组件可以完善JFrame窗口的布局,以及一些功能; 本篇内容中所有的组件所用到的类全都来自于javax.swing这个包中,记得引入
89 1
|
5月前
|
消息中间件 Java Kafka
Java 事件驱动架构设计实战与 Kafka 生态系统组件实操全流程指南
本指南详解Java事件驱动架构与Kafka生态实操,涵盖环境搭建、事件模型定义、生产者与消费者实现、事件测试及高级特性,助你快速构建高可扩展分布式系统。
298 7
|
7月前
|
Java 数据库连接 数据库
Java 组件详细使用方法与封装实战指南
本指南详解Java核心组件使用与封装技巧,涵盖跨平台开发、面向对象编程、多线程、数据库操作等关键内容,并提供工具类、连接池、异常及响应结果的封装方法。结合Spring框架、MyBatis、Spring Boot等主流技术,助你掌握高质量Java组件设计与开发实践。
239 2
|
3月前
|
机器学习/深度学习 人工智能 监控
Java与AI模型部署:构建企业级模型服务与生命周期管理平台
随着企业AI模型数量的快速增长,模型部署与生命周期管理成为确保AI应用稳定运行的关键。本文深入探讨如何使用Java生态构建一个企业级的模型服务平台,实现模型的版本控制、A/B测试、灰度发布、监控与回滚。通过集成Spring Boot、Kubernetes、MLflow和监控工具,我们将展示如何构建一个高可用、可扩展的模型服务架构,为大规模AI应用提供坚实的运维基础。
325 0
|
6月前
高性能网络库设计之日志组件
高性能网络库设计之日志组件
207 2
|
9月前
|
IDE Java 开发工具
JetBrains IntelliJ IDEA 2025.1 发布 - 领先的 Java 和 Kotlin IDE
JetBrains IntelliJ IDEA 2025.1 (macOS, Linux, Windows) - 领先的 Java 和 Kotlin IDE
630 2
|
10月前
|
监控 Java API
如何快速搭建和使用接口管理平台:YesApi Pro Java版指南 2025
YesApi Pro Java版是一款集接口开发、管理与计费于一体的全栈解决方案,支持私有化部署和深度定制。本文详细介绍了其搭建与使用流程:从环境准备到安装部署,再到平台初始化与基础设置;核心功能涵盖接口管理、文档生成、测试调试;还包括应用权限分配、流量监控与统计分析等模块。通过标准化与灵活性结合的设计,助力企业实现API全生命周期管理,提升开发效率与运维水平,为数字化转型提供技术支持。
|
10月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。