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自己实现)。
以这个"org.apache.ibatis.logging.slf4j.Slf4jLoggerImpl"适配器类为例,它的类声明部分片段如下:
一、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; }
相关文章推荐
- Java基础——I/O流简介(待续)
- java内部类学习笔记
- javax.mail.AuthenticationFailedException
- Java集群优化——必须了解的内存溢出与内存泄露
- JAVA内存泄露原因解析
- 智渔课堂官方免费教程四十五 :Java算法之递归算法
- I学霸官方免费教程四十五 :Java算法之递归算法
- Eclipse常用快捷键
- java正则表达式总结
- JDK各个版本的新特性jdk1.5-jdk8
- Java IO:了解I/O模型
- JAVA的反射机制
- 用户登陆登出日志
- 脱离 Spring 实现复杂嵌套事务,之一(必要的概念)
- Spring使用注解装配
- java反照机制模拟按键输入
- java1.8不能生成classes.dex
- Java高级应用(一个)-文件夹监控服务
- java:关于字符编码的试题
- Java集合框架类图