主页 > 电脑硬件  > 

MyBatis基础模块-日志模块

MyBatis基础模块-日志模块

首先日志在我们开发过程中占据了一个非常重要的地位,是开发和运维管理之间的桥梁,在Java中的日志框架也非常多,Log4j,Log4j2,Apache Commons Log,java.util.logging,slf4j等,这些工具对外的接口也都不尽相同,为了统一这些工具,MyBatis定义了一套统一的日志接口供上层使用。首先大家对于适配器模式要了解下哦。

1、Log Log接口中定义了四种日志级别,相比较其他的日志框架的多种日志级别显得非常的精简,但也能够满足大多数常见的使用了 public interface Log { boolean isDebugEnabled(); boolean isTraceEnabled(); void error(String s, Throwable e); void error(String s); void debug(String s); void trace(String s); void warn(String s); } 2、LogFactory LogFactory工厂类负责创建日志组件适配器,

在LogFactory类加载时会执行其静态代码块,其逻辑是按序加载并实例化对应日志组件的适配器,然后使用LogFactory.logConstructor这个静态字段,记录当前使用的第三方日志组件的适配器。具体代码如下,每个方法都比较简单就不一一赘述了。 3、 日志应用 那么在MyBatis系统启动的时候日志框架是如何选择的呢?首先我们在全局配置文件中我们可以设置对应的日志类型选择

这个"STDOUT_LOGGING"是怎么来的呢?在Configuration的构造方法中其实是设置的各个日志实现的别名的

然后在解析全局配置文件的时候就会处理日志的设置

进入方法

private void loadCustomLogImpl(Properties props) { // 获取 logImpl设置的 日志 类型 Class<? extends Log> logImpl = resolveClass(props.getProperty("logImpl")); // 设置日志 configuration.setLogImpl(logImpl); }

进入setLogImpl方法中

public void setLogImpl(Class<? extends Log> logImpl) { if (logImpl != null) { this.logImpl = logImpl; // 记录日志的类型 // 设置 适配选择 LogFactory.useCustomLogging(this.logImpl); } }

再进入useCustomLogging方法

public static synchronized void useCustomLogging(Class<? extends Log> clazz) { setImplementation(clazz); }

再进入

private static void setImplementation(Class<? extends Log> implClass) { try { // 获取指定适配器的构造方法 Constructor<? extends Log> candidate = implClass.getConstructor
标签:

MyBatis基础模块-日志模块由讯客互联电脑硬件栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“MyBatis基础模块-日志模块