今早,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动态添加命令行参数并获取(钩子函数:pytest_addoption)

    考虑场景: 我们的自动化用例需要支持在不同测试环境运行,有时候在dev环境运行,有时候在test环境运行: 有时候需要根据某个参数不同的参数值,执行不同的业务逻辑: 上面的场景我们都可以通过" ...

  2. python 用字典进行计数的三种常用方法

    1.常规方法 初始化一个字典,遍历列表或字符串,如果遍历的值已经存在于字典中,则字典值直接加1,否则,令字典键为当前遍历的值,字典值为1, 代码如下: >>> dic = {} &g ...

  3. HTTP 408 问题 - Koa body parser

    环境描述: 1.nodejs 作为 api 服务器,转发请求给 nginx 2.用 curl 测试,返回 408 找了很久没有找到原因,发现了一篇文章: https://lujunda.cn/2016 ...

  4. SQL高级优化(三)之存储引擎

    一.MySQL数据库引擎简介 1. ISAM(indexed Sequential Access Method) ​ ISAM 是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到数据 ...

  5. 文件上传之结合phpinfo与本地文件包含利用

    背景 某站点存在本地文件包含及phpinfo,可以利用其执行脚本. 原理 原理: 利用php post上传文件产生临时文件,phpinfo()读临时文件的路径和名字,本地包含漏洞生成1句话后门 1.p ...

  6. Java反射给泛型集合赋值

    Java反射给泛型集合赋值 泛型 Java泛型简单描述下: 比如创建一个List集合,我想在里边只放Student对象信息,就需要写成 List<Student> studentList ...

  7. DaemonSet:每个节点都运行一个Pod

    依旧从这里开始: kubectl explain daemonset.spec 一个基础daemonset yaml, apiVersion: apps/v1 kind: DaemonSet meta ...

  8. codeblocks中报错:'to_string' was not declared in this scope解决方案

    在windows下使用codeblocks(编译器采用MinGW)时,有时会遇到"'to_string' was not declared in this scope"的错误,这里 ...

  9. manjaro20夜灯夜间模式开关

  10. 【摘抄】疑问chatterbot

    ChatterBot使用哪种机器学习? -------------------------------------------------- -  简而言之,ChatterBot使用了许多不同的机器学 ...