# (一)关于Mybatis日志 {#一-关于mybatis日志}
日志作为定位问题最重要的依据之一,在任何系统下都是不可或缺的,Mybatis 通过使用内置的日志工厂提供日志功能。在前面讲设置的时候,我们已经看到了Mybatis可以配置以下几种日志工厂:
可选的值有:SLF4J、LOG4J、LOG4J2、JDK_LOGGING、COMMONS_LOGGING、STDOUT_LOGGING、NO_LOGGING,或者是实现了 org.apache.ibatis.logging.Log 接口,且构造方法以字符串为参数的类完全限定名。
# (二)使用STDOUT_LOGGING输出标准日志 {#二-使用stdout-logging输出标准日志}
我们先使用标准的日志输出功能,首先在Mybatis-config.xml
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
我们跑一段简单的sql来看一下日志的输出
在日志中可以清楚的看到JDBC的连接信息,执行的sql,获取到的结果等信息。
# (三)使用Log4J日志 {#三-使用log4j日志}
log4J日志相信大家都不陌生,至少在我工作的这段经历里,日志框架就只用了log4j,还是一样的步骤,首先在设置中将logImpl的值设置为LOG4J
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
Mybatis的系统内部是不包含这些外部日志框架的,因此需要引入依赖:
导入log4j的依赖
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
接着配置log4j,新建一个log4j.properties
## 全局日志配置
log4j.rootLogger=ERROR, stdout,logfile
## MyBatis 日志配置
log4j.logger.com.javayz.mapper.UserMapper=TRACE
## 控制台输出
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
#### 把日志信息输出到文件:jbit.log ###
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=jbit.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n
上面的这段配置将详细打印javayz.mapper.UserMapper的日志,对于其他的部分只打印错误信息,同时把日志写入jbit.log中。
通过下面的配置只打印部分语句的日志:
log4j.logger.com.javayz.mapper.UserMapper.getUserById=TRACE
也可以打印一整组映射器的日志
log4j.logger.com.javayz.mapper=TRACE
SQL 语句将会在 DEBUG 日志级别下记录,因此只想查看 SQL 语句,而忽略返回的结果集,可以将日志等级设置为DEBUG:
log4j.logger.com.javayz.mapper=DEBUG
至于更多有关log4j的内容,在Mybatis的学习中就不做过多介绍了。