背景:在对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的Logging介绍,下面是实际的操作步骤:
1.首先你需要下载log4j的jar包并将其放在项目的lib目录下,如果是maven项目,直接pom中增加对log4j的依赖即可
2.增加log4j配置文件log4j.xml到classpath目录下
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>
看看效果: