今早,DD注意到JetBrains在官方博客发文宣布要将log4j从IntelliJ平台移除了,该变化将在2022.1版本发布。

从博文看,本次移除log4j的漏洞,并非担心log4j2的漏洞问题,因为基于IntelliJ平台的IDE使用的并非log4j2,而是log4j 1.2的补丁版本(移除了所有网络相关的代码)。这里DD也顺便看了一下,之前log4j核弹漏洞大爆发时候的消息,根据官方给出的公告看,其旗下大量开发工具类产品并不受影响。

此次决定将log4j移除,核心还是因为IntelliJ平台的IDE其实对于日志的需求非常低(仅用来信息到文件和控制台),而log4j太过于复杂(会直接或间接引入太多第三方内容)。为了避免未来出现其他潜在的问题,所以将移除对log4j的依赖。

影响范围

从开发工具中移除log4j其实对大部分开发者影响不大,但如果你是插件开发者,那么会受一些影响。所以,官方给出了一些建议:

  • 如果您在自己的插件代码中使用log4j:切换到使用标准平台日志记录APIcom.intellij.openapi.Diagnotic.Logger
  • 如果您在自己的代码中使用log4j,该代码在插件和其他上下文中都可以使用:请切换到使用SLF4J API。IntelliJ平台通过java.util.log附带了SLF4J API的实现,因此该平台完全支持SLF4J日志记录。
  • 如果在代码的依赖项中使用log4j:请求依赖项维护者切换到SLF4J。如果这是不可能的,多亏了log4j到SLF4J桥,从依赖项进行的日志记录很可能会继续工作。
  • 如果您使用log4jAPI定制使用SLF4J的依赖项的日志记录:切换到使用java.util.logingAPI来配置处理程序和日志级别。
  • 如果您在测试中使用log4jXML文件来配置日志记录:请切换到使用.properties文件的配置,如LogManager文档中所述。使用IntelliJ测试框架运行测试时,可以使用idea.log.config.properties文件系统属性传递日志属性文件的路径。

DD觉得对于IntelliJ这样的产品来说,移除log4j还是非常值得我们学习的,正如官方所说的那样,log4j过于复杂,会引入很多其他东西,而这些东西带来的特性对自己有没啥用,确实会造成一些隐患。不提安全问题吧,就依赖管理上,DD以前帮其他开发查问题的时候,经常发现的依赖冲突大多就是引入了一些复杂的高级依赖形成的。

最后,考考大家,JetBrains这一决定,符合面向对象设计六大原则中的哪一个原则?留言说出你的答案!

我们创建了一个高质量的技术交流群,与优秀的人在一起,自己也会优秀起来,赶紧点击加群,享受一起成长的快乐。

欢迎关注我的公众号:程序猿DD。第一时间了解前沿行业消息、分享深度技术干货、获取优质学习资源

JetBrains官博:将从IntelliJ平台移除Log4j的依赖的更多相关文章

  1. IntelliJ IDEA + Maven iml文件中依赖项的需求是什么?

    在Maven中,项目的依赖关系在pom.xml文件中指定.在IntelliJ IDEA中,即使对于Maven项目,相同的信息也存储在iml文件中.在两个地方有相同的信息需要什么? 当导入Maven项目 ...

  2. JavaMetaweblogClient,Metaweblog的java实现-从此上传博客实现全平台

    目录 1. 什么是Metaweblog? 2. Metaweblog的应用 3. 如何使用Metaweblog 4. 本项目介绍 4.1 metaweblog与java之间的关系映射 4.2 使用Ja ...

  3. php源码建博客3--区分平台的MVC结构

    主要: 模型单例工厂 目录结构优化 区分平台(前台,后台....) --------------文件结构:-------------------------------------- blog├─Ap ...

  4. 同步博客到cnblogs平台

    缘由 最最开始在csdn写博客,广告太多,平台暗调资源积分,退:后来使用githubpage+jeklly搭建静态博客,感觉不错,回归到安静的敲打环境.emmmm,由于是静态博客项目,虽能最大化自定义 ...

  5. 博客迁移至新平台ixirong.com

    很久没有在博客园上写文章了,一是时间有些忙,更重要的是自己还是没有抽出时间来坚持写下去,由于15年后自己的一些打算,在前一段时间的时候,建立了自己的个人博客站点,http://www.ixirong. ...

  6. 无法打开jetbrains官网

    找到下面hosts文件,用记事本打开,删除关于jetbrain的文字 需要管理员权限才能操作这个文档: 先后输入cmd和 notepad hosts 删除掉关于jetbrains的模块,再次访问htt ...

  7. 从ASP.Net Core Web Api模板中移除MVC Razor依赖项

    前言 :本篇文章,我将会介绍如何在不包括MVC / Razor功能和包的情况下,添加最少的依赖项到ASP.NET Core Web API项目中. 一.MVC   VS WebApi (1)在ASP. ...

  8. CDH平台搭建解决离线安装依赖包的方法

    背景介绍: 1CDH开发平台在搭建的过程中,会遇到各种各样的问题,其中的各种依赖就是一个很让人头痛的问题.如果安装脚本文件出现了这种问题,那么就可以把以下的这种方法加入shell中,但是不要用yum来 ...

  9. Intellij IDEA中使用log4j日志

    一.在pom.xml中添加依赖 <dependency> <groupId>log4j</groupId> <artifactId>log4j</ ...

随机推荐

  1. mysql语句1-创建库和表

    一.DDL数据定义语言 就是对书库内部的对象进行创建.删除.修改等操作的语言. 关键字:create  drop  alter 1.连接数据库 mysql -u用户名 -p -h指定主机(不指定默认是 ...

  2. Docker_部署本地镜像仓库(6)

    在部署本地镜像仓库之前,需要在主机上安装Docker.本地镜像仓库是registry镜像的一个实例,在Docker中运行. 1.创建本地镜像仓库服务 $ docker run -d -p 4000:5 ...

  3. git报错 error: cannot stat 'file': Permission denied

    切换分支(git checkout xxx)时报错: error: cannot stat 'file': Permission denied 解决方法:退出编辑器.浏览器.资源管理器等,然后再切换就 ...

  4. Linux上天之路(十一)之软件管理

    软件包格式: RPM:源码封装后的格式,类似于exe文件 源码:软件源代码,可以修改,优化 1. RPM软件包管理 rpm是一个很有用的包管理器,可以用于生成.安装.查询.核实.更新以及卸载单个软件包 ...

  5. Echart可视化学习(六)

    文档的源代码地址,需要的下载就可以了(访问密码:7567) https://url56.ctfile.com/f/34653256-527823386-04154f 柱状图定制 官网找到类似实例, 适 ...

  6. doT.js模板用法

    前提:引入doT.min.js: <script type="text/javascript" src="js/jquery.js"></sc ...

  7. leetcode 33. 搜索旋转排序数组 及 81. 搜索旋转排序数组 II

    33. 搜索旋转排序数组 问题描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定 ...

  8. 《Java核心技术·卷Ⅰ:基础知识(原版10》学习笔记 第5章 继承

    <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 目录 <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 5.1 类.超类和子类 5.1 ...

  9. 单片机main函数退出后发生什么——以stm32为例

    STM32:main函数退出后发生什么? 我们都在说单片机要运行在无限循环里,不能退出,可退出之后会发生什么? 讨论STM32启动过程的文章数不胜数,可main函数结束之后会发生什么却少有讨论. 几日 ...

  10. [硬件]USB TYPE C引脚定义