今早,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。第一工夫理解前沿行业音讯、分享深度技术干货、获取优质学习资源