开发者学堂课程【SpringBoot快速掌握 - 核心技术:其他日志框架统一转换为 slf4j】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/612/detail/9235
其他日志框架统一转换为 slf4j
一,遗留问题
a ( slf4j+logback ):Spring ( commons-logging )、Hibernate ( jboss-logging )、MyBatis、xxxx
统一日志记录,即使是别的框架和我一起统一使用 slf4j 进行输出?
其 中 spring 框架中的底层使用的便是 Spring ( commons-logging ),而 Hibernate的底层使用的是( jboss-logging )
以前我们使用的是 application 应用层到slf4j-api.jar抽象层,而真正实现的是logback。这个应用程序可能使用其他的框架,而每一个框架又都有不同的日志,比如有的使用的是 Commons logging API,有的使用的 log4j-api.jar,又或者是java.util.loggingAPI。替换的意思就是用户需要将 Commons logging API 排除掉。假设我们的 spring 框架正在使用 Commons logging API时,会报错,找不到Commons logging API,因为 spring 在底层就使用了 Commons logging API 这个配置,而用户却没有导入这些 jar 包。此时的解决方案就是使用一个新的jar包使用的新包需要具备 Commons logging API 的功能,因为之前已经排除掉了Commons logging API,但是 spring 框架也还是有 Commons 的,新的包的实现过程是先被调用到 slf4j 然后再被 logback 调用在控制台打印。这就好比中间存在了一个包装层。在此,我们使用的 Commons logging API,log4j-api.jar,java.util.loggingAPI 就是我们的包装层。
实例,当用户想要使用 log4j 与 slf4j 的组合,日志接口选择了 slf4j,实现选择log4j。曾经的老套路可能就只适用于单线使用。问题是如果用户还要加入其他的日志,如 Commons logging API 和 java.util.loggingAPI。同样的,如果用户想要使用 slf4 j和 slf4j-jdk ,单线使用时和之前的使用方法大同小异,但如果用户想要在这中间加入 Commons logging API 或者是 log4j-api.jar 框架的话,此时只需要将功能相同的 jar 包替换掉就可以了。
如何让系统中所有的日志都统一到 slf4j;
1, 将系统中其他日志框架排除出去;
2, 用中间包来替换原有的日志框架;
3, 我们导入 slf4j 其他的实现