MyBatis日志为什么可以兼容其他的日志框架

介绍

本篇文章为大家展示了MyBatis日志为什么可以兼容其他的日志框架,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

日志,在我们开发中是一个非常重要的话题,良好的日志打印可以帮助我们快速的定位问题,可能现在我们开发用到最多的日志框架就是slf4j了,但是日志还有其他很多优秀的框架,比如:Apache日志,Log4j,之后等.MyBatis作为一款优秀的ORM框架,定义了一套统一的日志接口供应用层调用,而底层却利用<>强适配器模式兼容了我们上面所列出来的常用日志框架。

在介绍MyBatis的全局配置文件的时候,我们提到内设置有一个属性logImpl,可以配置的选项有:slf4j, Log4j, LOG4J2, JDK_LOGGING, COMMONS_LOGGING, STDOUT_LOGGING, NO_LOGGING。
这就说明MyBatis支持六种日志类型(NO_LOGGING是不打印日志)。我们看一下MyBatis的日志模块也可以很明显的看出六种日志类型:

 MyBatis日志为什么可以兼容其他的日志框架“> <br/> </p> <p>它们的对应关系为:</p>日志属性对应日志模块包名实现方式SLF4Jslf4j使用slf4j日志框架实现LOG4Jlog4j使用Log4j日志框架实现(1. x版本)LOG4J2log4j2使用Log4j日志框架实现(2. x版本)JDK_LOGGINGjdk14使用java.util。日志实现COMMONS_LOGGINGcommons使用Apache Commons logging实现STDOUT_LOGGINGstdout使用系统类实现NO_LOGGINGnologging不打印日志<p> PS:需要注意的是,SLF4J并不是一个具体的日志框架,也就是我们不能单独只配置SLF4J而不引入其他任何具体的日志框架。</p> <p> </p> <p> SLF4J:简单日记门面。(英文全称为简单Java日志Facade),这个是用来为各种日志框架提供一个简单的统一的接口,这样使得我们在切换日志框架的时候可以直接替换jar包就可以了,而无需修改源代码。</p> <p> logback我想大家都用过,logback是一个实现了具体日志打印的框架,但是MyBatis上面列出来的分类并没有支持logback,它又为什么能够打印呢?这就是SLF4J的作用了,因为logback也实现了SLF4J提供的接口,所以我们需要将logback和SLF4J结合配置使用才行。而后面的介绍中也可以看的到,MyBatis中如果我们不指定日志种类的时候,优先选择的就是SLF4J,这正是因为SLF4J可以和其他许多日志框架一起结合来使用。</p> <p>那么假如我们指定了日志类型为SLF4J,但是不引入其他任何实现呢? <br/>答案就是MyBatis不会打印任何日志出来,下图就是只配置了SLF4J而没有引入其他任何实现的警告信息:<br/> </p> <p> <img src=MyBatis日志为什么可以兼容其他的日志框架