Mybatis选择"Mybatis日志抽象层+第三方日志框架"组合方案作为Mybatis的日志框架解决方案。
Mybatis日志抽象层主要包含两个类:org.apache.ibatis.logging.Log和org.apache.ibatis.logging.LogFactory。
static { tryImplementation(new Runnable() { public void run() { LogFactory.useSlf4jLogging(); } }); tryImplementation(new Runnable() { public void run() { LogFactory.useCommonsLogging(); } }); tryImplementation(new Runnable() { public void run() { LogFactory.useLog4J2Logging(); } }); tryImplementation(new Runnable() { public void run() { LogFactory.useLog4JLogging(); } }); tryImplementation(new Runnable() { public void run() { LogFactory.useJdkLogging(); } }); tryImplementation(new Runnable() { public void run() { LogFactory.useNoLogging(); } }); }2)当Mybatis动态确定了所使用的第三方日志框架后,执行"org.apache.ibatis.logging.Log log=org.apache.ibatis.logging.LogFactory.getLog(Main.class);"语句,会返回一个适配器实例,该适配器类继承"org.apache.ibatis.logging.Log"类,里面包含对第三方日志框架的日志记录类的引用。
package org.apache.ibatis.logging.slf4j; import org.apache.ibatis.logging.Log; import org.slf4j.Logger; class Slf4jLoggerImpl implements Log { private Logger log; }