今早,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. 『德不孤』Pytest框架 — 1、Pytest测试框架介绍

    目录 1.什么是单元测试框架 2.单元测试框架主要做什么 3.单元测试框架和自动化测试框架有什么关系 4.Pytest测试框架说明 5.Pytest框架和Unittest框架区别 (1)Unittes ...

  2. Flask_蓝图Blueprint(十四)

    什么是蓝图? 蓝图:用于实现单个应用的视图.模板.静态文件的集合. 蓝图就是模块化处理的类. 简单来说,蓝图就是一个存储操作路由映射方法的容器,主要用来实现客户端请求和URL相互关联的功能. 在Fla ...

  3. java 字符串 大小写转换 、去掉首末端空格 、根据索引切割字符 、判断是否含有某连续字符串

    1. 字符串转大写: toUpperCase() 字符串转小写: toLowerCase() @Test public void tt(){ String d = "sdgGHJGjghGH ...

  4. Go语言系列之性能调优

    在计算机性能调试领域里,profiling 是指对应用程序的画像,画像就是应用程序使用 CPU 和内存的情况. Go语言是一个对性能特别看重的语言,因此语言中自带了 profiling 的库,这篇文章 ...

  5. 用jquery实现省市联动

    <!-- 需求: [1] 动态生成省份选择框. [2] 当选择了省份的某一项时, 动态改变 城市选择中的列表项. --> <!DOCTYPE html> <html la ...

  6. elementui-日期选择器时间清空报错踩坑

    今天在项目中遇到了这个大坑 具体问题:在日期清空时会报错 解决方法:给日期绑定的值添加监听

  7. WEB开发的相关知识(Tomcat)

    Internet上供外界访问的Web资源分为 静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变. 动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访 ...

  8. JVM完整详解:内存分配+运行原理+回收算法+GC参数等

    不管是BAT面试,还是工作实践中的JVM调优以及参数设置,或者内存溢出检测等,都需要涉及到Java虚拟机的内存模型.内存分配,以及回收算法机制等,这些都是必考.必会技能. JVM内存模型 JVM内存模 ...

  9. 【刷题-LeetCode】203. Remove Linked List Elements

    Remove Linked List Elements Remove all elements from a linked list of integers that have value *val* ...

  10. Qt之QFontDialog

    widget.h: #ifndef WIDGET_H #define WIDGET_H #include <QWidget> class Widget : public QWidget { ...