`
zhouguiping2008
  • 浏览: 5311 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ibatis里面日志记录支持多种日志就起原理

 
阅读更多
ibatis里面提供了四中日志记录器,一种是apache的common loggin,一种是jdk的日志记录
一种是log4j,一种是自己实现的不记录。

那么ibats是怎么来实现不同种类来切换的呢?通过顺序加载每一种日志记录器来实现,也就是如果classpath下有哪种日志记录器的jar,就用哪种来实现,代码如下:
public class LogFactory {

  private static Constructor logConstructor;

  static {
    tryImplementation("org.apache.commons.logging.LogFactory", "com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl");
    tryImplementation("org.apache.log4j.Logger", "com.ibatis.common.logging.log4j.Log4jImpl");
    tryImplementation("java.util.logging.Logger", "com.ibatis.common.logging.jdk14.Jdk14LoggingImpl");
    tryImplementation("java.lang.Object", "com.ibatis.common.logging.nologging.NoLoggingImpl");
  }

  private static void tryImplementation(String testClassName, String implClassName) {
    if (logConstructor == null) {
      try {
        Resources.classForName(testClassName);
        Class implClass = Resources.classForName(implClassName);
        logConstructor = implClass.getConstructor(new Class[]{Class.class});
      } catch (Throwable t) {
      }
    }
  }


从上面可以看出来,是利用了classLoad来实现的,如果没有加载到就抛出异常,说明不采用当然的日志记录器,如果我们在lib目录下什么都没有放,那么根据代码肯定是加载了jdk的日志记录器,所以构造方法就不会为空,最终就是用的jdk来实现的。
分享到:
评论

相关推荐

    纯净版SpringMVC+Ibatis+log4j环境

    **Log4j** 是一个日志记录工具,提供灵活的日志级别控制和多种输出方式,便于调试和问题定位。其关键组件有: 1. **Logger**:记录日志的对象,通过不同的级别(DEBUG, INFO, WARN, ERROR等)控制输出。 2. **...

    关于Ibatis的jar包

    - **日志库**:如log4j或slf4j,用于记录Ibatis的执行日志,帮助调试和性能分析。 - **其他依赖**:如ognl,用于表达式语言支持,使得在XML中可以执行更复杂的逻辑。 学习Ibatis,除了理解这些基本概念,还需要...

    struts2+ibatis例子

    8. **Struts2拦截器**:拦截器是Struts2的一大特色,你可以自定义拦截器实现特定的功能,比如权限控制、日志记录等。通过配置拦截器栈,可以实现复杂的请求处理流程。 9. **集成测试**:虽然这个例子没有集成Spring...

    ibatis_修改sqlmap不重启

    3. 智能缓存策略:Ibatis支持多种缓存策略,包括本地缓存和二级缓存。如果开启了缓存,需要注意的是,修改SqlMap后可能需要清空缓存,以便应用能够立即反映出最新的查询逻辑。 三、开发工具辅助 现代的IDE如...

    ibatis 指导书 PDF

    iBATIS 支持使用 Jakarta Commons Logging 进行日志记录。通过在 XML 配置文件中设置相应的日志级别,可以详细记录 SQL 执行情况和其他关键信息。 **配置日志服务:** - **启用日志记录**:在配置文件中启用日志...

    ibatis-sqlMap

    - **Logging SqlMap Activity**:记录DataMapper的操作日志,便于调试和监控。 - **The One Page JavaBeans Course**:简要介绍JavaBeans的基本概念,对于理解DataMapper的工作原理很有帮助。 - **Resources ...

    ibatis中文api文档

    - **元素**:定义框架的行为参数,例如开启或关闭日志记录。 - **元素**:为Java类型定义别名,简化配置文件。 - **元素**:指定事务管理器类型,如JDBC或JTA。 - **元素**:配置数据源信息,如JNDI数据源。 - **...

    struts1.2 spring2 ibatis 集成项目实战源码

    AOP则用于实现如日志记录、安全检查等跨切面关注点。在实战项目中,Spring的ApplicationContext.xml会配置Bean定义,包括Struts的Action类、Service层接口及实现、DAO层等。 再者,iBatis是一个持久层框架,它提供...

    Struts2+ibatis资料大全

    利用拦截器,开发者可以添加额外的功能,如日志记录、权限验证等,无需修改Action代码。Struts2还支持多种视图技术,如JSP、FreeMarker或Velocity,使得视图层更加灵活。 **iBatis框架详解:** iBatis是MyBatis的...

    Mybatis3系列课程-日志

    3. **日志实现**:Mybatis支持多种日志实现,包括Log4j、Logback、Java Util Logging、SLF4J等。选择哪种实现取决于你的项目配置。例如,Log4j是早期广泛使用的日志框架,而Logback是Log4j的后继者,提供了更好的...

    ibatis net 指导 手册

    ### ibatis net 指南知识点详解 #### 1. iBATIS Data Mapper 简介 - **1.1 覆盖内容** - 本指南将详细介绍iBATIS Data Mapper的基本概念、配置... - 介绍如何配置日志记录,以便追踪SQL语句执行情况和其他重要信息。

    iBATIS 帮助文档

    - **<setting> 元素**:设置 SQL Map 的运行时行为,例如开启/关闭日志记录、设置默认的事务处理方式等。 - **<typeAlias> 元素**:定义 Java 类型的别名,简化 XML 映射文件中的类型引用。 - **...

    ibatis,spring SSHI2实例

    此外,Struts2还提供了拦截器机制,可以方便地进行日志记录、权限控制等操作。 Spring框架则是一个全面的后端解决方案,它不仅包含了依赖注入(DI)和面向切面编程(AOP)等核心特性,还提供了数据库事务管理、持久...

    Spring2.5+ibatis2.3+Extjs2.0+Struts2实现用户管理

    此外,Spring的AOP(面向切面编程)功能允许我们在不修改业务代码的情况下实现日志记录、事务管理等横切关注点。 接着,iBatis 2.3作为一个轻量级的持久层框架,它将SQL语句与Java代码分离,使得数据库操作更加灵活...

    原样输出mybatis的sql执行语句(mysql和oracle都可用).zip

    MyBatis支持多种日志实现,如Log4j、Logback和Java内置的日志API。在SpringBoot项目中,可以在`application.properties`或`application.yml`配置文件中添加以下内容来启用日志: ```properties # application....

    mybatis-3-mybatis-3.2.6.zip

    10. **org.apache.ibatis.logging**:日志系统,支持多种日志框架如Log4j、SLF4J和Java内置的日志API。 通过阅读这些源码,开发者可以了解到MyBatis是如何处理SQL的动态生成、结果映射、事务控制等核心功能,同时也...

Global site tag (gtag.js) - Google Analytics