首页 > 代码库 > MyBatis应用开发(6)日志之日志配置

MyBatis应用开发(6)日志之日志配置

1. 日志

1.1. 日志配置

MyBatis的总体配置文件中可以通过setting配置所采用的日志输出途径,也可以配置为不输出日志。

logImpl:配置MyBatis使用的日志实现方式。可以选的方式:SLF4JLOG4JLOG4J2JDK_LOGGINGCOMMONS_LOGGINGSTDOUT_LOGGINGNO_LOGGING。也可以是实现了org.apache.ibatis.logging.Log接口的类的全限定名。

 

<configuration>

 

<!-- 配置参数 -->

<settings>

 

 <!-- 使用LOG4J日志 -->

<setting  name="logImpl"  value="http://www.mamicode.com/LOG4J" />

 

</settings>

</configuration>

 

在配置为SLF4JLOG4J时,需要再配置一个log4j.properties文件。

log4j.rootLogger=DEBUG,CONSOLE

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout

log4j.appender.CONSOLE.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

log4j.logger.com.genuitec.eclipse.sqlexplorer=WARN

log4j.logger.org.apache=WARN

log4j.logger.NET.sf.hibernate=WARN

 

log4j.properties文件中,可以对某些Mapper接口进行特殊配置。

比如可以指定com.test.mybatis3.mapper.PersonMapper这个接口的配置选项为WARN,此时该接口将相关数据库操作的日志级别为WARN,而其它未特殊配置的Mapper接口的日志级别仍然为DEBUG

 

log4j.logger.com.test.mybatis3.mapper.PersonMapper=WARN

 

MyBatis同时允许对某个接口的某个方法设定特殊的日志级别。

 

#Mapper interface:PersonMapper Log level=TRACE

log4j.logger.com.test.mybatis3.mapper.PersonMapper=DEBUG

 

#Mapper method:PersonMapper.findAllPersons Log level=TRACE

log4j.logger.com.test.mybatis3.mapper.PersonMapper.findAllPersons=TRACE

 

 

MyBatis中各种特定的日志级别如下所示:

SQL语句:DEBUG

结果集:  TRACE

 

在将日志级别设置为TRACE级别时,可以看到以下MyBatis日志输出:

0    [main] DEBUG com.test.mybatis3.mapper.PersonMapper.findAllPersons  - ==>  Preparing: select * from t_person order by id asc

63   [main] DEBUG com.test.mybatis3.mapper.PersonMapper.findAllPersons  - ==> Parameters:

78   [main] TRACE com.test.mybatis3.mapper.PersonMapper.findAllPersons  - <==    Columns: id, name, status

78   [main] TRACE com.test.mybatis3.mapper.PersonMapper.findAllPersons  - <==        Row: lisi, li si, 0

78   [main] TRACE com.test.mybatis3.mapper.PersonMapper.findAllPersons  - <==        Row: zhangsan, zhang san, 0

78   [main] DEBUG com.test.mybatis3.mapper.PersonMapper.findAllPersons  - <==      Total: 2

 

当不使用Mapper接口方式实现数据库访问,而是直接使用SqlSession接口的selectList()等方法实现时,只需要将前面介绍的Mapper接口的全限定名修改为Mapper配置文件中的mapper结点的namespace属性的值即可,也可以单独配置某个namespace下的单个SQL语句的日志级别。在使用Mapper接口方式时,由于namespace的值必须和Mapper接口的全限定名相同,所以此时也可以认为在log4j.properties文件中使用的是namespace的值。

 

本文参考了MyBatis官方网站的介绍:http://www.mybatis.org/mybatis-3/zh/logging.html

MyBatis应用开发(6)日志之日志配置