mybatis整合log4j打印sql语句

背景:在对mybatis的mapper接口进行调试时,希望能够打印执行的sql语句

查阅mybatis官方文档关于Logging的一节,可以知道mybatis支持多个日志框架:

Mybatis 内置的日志工厂提供日志功能,具体的日志实现有以下几种方式:
• SLF4J
• Apache Commons Logging
• Log4J
• JDK logging
具体选择哪个日志实现由 MyBatis 的内置日志工厂确定。它会使用最先找到的(按上文列举的顺序查
找)。 如果一个都未找到,日志功能就会被禁用。 

关注2点:支持类型和优先级,比如应用的classpath种有Commons Loggin时,会忽略Log4J的配置,这时候需要调用(根据需要使用的日志框架)下面的某个方法:

org.apache.ibatis.logging.LogFactory.useSlf4jLogging();
org.apache.ibatis.logging.LogFactory.useLog4JLogging();
org.apache.ibatis.logging.LogFactory.useJdkLogging();
org.apache.ibatis.logging.LogFactory.useCommonsLogging();
org.apache.ibatis.logging.LogFactory.useStdOutLogging

同时mybatis提供了配置的方式去解决优先级的问题,如果需要使用Log4J框架,可以在mybatis的配置文件的settings节点下中增加如下配置:

   <setting name="logImpl" value="LOG4J"></setting>

logImpl的有效值:

《mybatis整合log4j打印sql语句》

上面是官方文档对mybatis的Logging介绍,下面是实际的操作步骤:
1.首先你需要下载log4j的jar包并将其放在项目的lib目录下,如果是maven项目,直接pom中增加对log4j的依赖即可

2.增加log4j配置文件log4j.xml到classpath目录下

《mybatis整合log4j打印sql语句》

3.log4j.xml中需要有控制台输出的appender配置:

<!-- 输出日志到控制台  ConsoleAppender -->
    <appender name="STDOUT"
              class="org.apache.log4j.ConsoleAppender">
        <param name="Threshold" value="debug"></param>
        <layout class="org.apache.log4j.TTCCLayout">
            <param name="ConversionPattern" value="TTCCLayout"></param>
        </layout>
    </appender>

2.增加需要记录日志的mapper类对应logger配置:

<logger name="dnsdatabase.db.mapper.TrecordMapper">
        <level value="debug"></level>
        <appender-ref ref="STDOUT"></appender-ref>
</logger>

看看效果:

《mybatis整合log4j打印sql语句》

    原文作者:测试你个头
    原文地址: https://www.jianshu.com/p/9bc00ca882e1
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞