您的位置:首页 > 编程语言 > Java开发

Java日志框架——Mybatis选用的日志框架解决方案

2015-08-14 20:42 483 查看
Mybatis选择"Mybatis日志抽象层+第三方日志框架"组合方案作为Mybatis的日志框架解决方案。

一、Mybatis日志抽象层

Mybatis日志抽象层主要包含两个类:org.apache.ibatis.logging.Log和org.apache.ibatis.logging.LogFactory。

二、第三方日志框架

Mybatis运行时动态确定所使用的第三方日志框架。

在我们执行"org.apache.ibatis.logging.Log log=org.apache.ibatis.logging.LogFactory.getLog(Main.class);"的语句的时候,具体有以下几个步骤:

1)在org.apache.ibatis.logging.LogFactory中,有如下静态加载语句。

即当我们加载org.apache.ibatis.logging.LogFactory类的时候,首先会去动态确定使用哪个第三方日志框架。第三方日志框架被选用的优先级顺序从大到小为:SLF4J,JCL,Log4J,Java Logging API,NOP日志框架(Mybatis自己实现)。

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"类,里面包含对第三方日志框架的日志记录类的引用。

以这个"org.apache.ibatis.logging.slf4j.Slf4jLoggerImpl"适配器类为例,它的类声明部分片段如下:

package org.apache.ibatis.logging.slf4j;

import org.apache.ibatis.logging.Log;
import org.slf4j.Logger;

class Slf4jLoggerImpl implements Log {
private Logger log;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: