使用MyBatis,结合log4j想在控制台打印出控制信息,结果INFO级别的都不打印,而error级别的却可以。
MyBatis内置的日志工厂提供日志功能,具体的日志实现有以下几种工具:
SLF4J
Apache Commons Logging
Log4J 2
log4J
JDK logging
具体的选择哪一一个日志的实现工具由MyBatis的内置日志工厂来确定。他会使用最先找到的(按照上面那个
顺序找),如果一个都没有找到,日志功能就会被禁用。
但是,不幸的是,在不少的服务里面已经包含了Commons Logging了,按照上面的那个顺序,
我们的Log4j自然而然就被MyBatis忽略了。
扫描二维码关注公众号,回复:
9144415 查看本文章
但是,MyBatis也提供了解决方法,我们可以在MyBatis的配置文件中来设置我们需要使用的
日志(即指定)
下面我们来看一个配置样例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="jdbc.properties"/>
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/fjnu/mapper/CustomerMapper.xml"/>
</mappers>
</configuration>
这里配置的核心在于:
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
(注意这段配置的写的位置!)
这样,就可以使用log4j来使用了,可以看到在控制台打印出来的日志信息。
附上详细的log4j配置信息:
依赖:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
log4j2.properties:
log4j.rootLogger=DEBUG,stdout
log4j.logger.org.mybatis=DEBUG
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d %c: %m%n