今天早上,DD注意到JetBrains在官博上宣布将从IntelliJ平台移除log4j。此更改将在版本2022.1中发布。根据博文,这次移除log4j漏洞是不用担心log4j2漏洞,因为基于IntelliJ平台的IDE并没有使用log4j2,而是打了补丁的log4j1.2版本(移除所有网络相关代码).这里DD也顺便看了一眼。根据log4j核弹漏洞爆发时的消息,根据官方公告,其大量开发工具产品不受影响。这次决定去掉log4j的核心是因为IntelliJ平台的IDE其实对日志的要求很低(只用来给文件和控制台发送信息),而且log4j太复杂了(第三方内容太多会直接或间接介绍)。为了避免将来出现其他潜在问题,将删除对log4j的依赖。影响范围从开发工具中移除log4j不会对大多数开发人员造成太大影响,但如果您是插件开发人员,则会受到一定影响。因此,官方给出了一些建议:如果在自己的插件代码中使用log4j:切换到使用标准平台日志记录APIcom.intellij.openapi.Diagnotic.Logger如果在自己的代码中使用log4j,代码在插件和其他上下文:请切换到使用SLF4JAPI。IntelliJ平台通过java.util.log附带了SLF4JAPI的实现,因此该平台完全支持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。第一时间了解行业前沿资讯,分享深度技术干货,获取优质学习资源
