Mybatis使用log4j无法在控制台输出日志信息

使用MyBatis,结合log4j想在控制台打印出控制信息,结果INFO级别的都不打印,而error级别的却可以。

MyBatis内置的日志工厂提供日志功能,具体的日志实现有以下几种工具:

SLF4J

Apache Commons Logging

Log4J 2

log4J

JDK logging

具体的选择哪一一个日志的实现工具由MyBatis的内置日志工厂来确定。他会使用最先找到的(按照上面那个

顺序找),如果一个都没有找到,日志功能就会被禁用。

但是,不幸的是,在不少的服务里面已经包含了Commons Logging了,按照上面的那个顺序,

我们的Log4j自然而然就被MyBatis忽略了。

但是,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
发布了241 篇原创文章 · 获赞 94 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/weixin_41060905/article/details/103312664