download:2周刷完100道前端优质面试真题-无密分享-思索IT (sisuoit.com)
影响范围
从开发工具中移除log4j其实对大部分开发者影响不大,但如果你是插件开发者,那么会受一些影响。所以,官方给出了一些建议:
- 如果您在自己的插件代码中使用log4j:切换到使用标准平台日志记录API
com.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以前帮其他开发查问题的时候,经常发现的依赖冲突大多就是引入了一些复杂的高级依赖形成的。