Spring3 MyBatis3 日志配置

//org.apache.ibatis.logging.LogFactory;

static {
    tryImplementation(new Runnable() {
      public void run() {
        useSlf4jLogging();
      }
    });
    tryImplementation(new Runnable() {
      public void run() {
        useCommonsLogging();
      }
    });
    tryImplementation(new Runnable() {
      public void run() {
        useLog4JLogging();
      }
    });
    tryImplementation(new Runnable() {
      public void run() {
        useJdkLogging();
      }
    });
    tryImplementation(new Runnable() {
      public void run() {
        useNoLogging();
      }
    });
  }

查看Mybatis源码发现,他日志框架的寻找顺序:slf4j-->commons logging-->log4j

不能直接引入log4j jar包,因为即使我不导入slf4j的包,但是spring的maven配置中会依赖commons-logging,这就导致Mybatis会先使用commons-logging.所以还是老实一点先引入slf4j的包,在定向到log4j吧

<dependency>
	<groupId>org.slf4j</groupId>
	<artifactId>slf4j-log4j12</artifactId>
	<version>1.6.4</version>
</dependency>
<dependency>
	<groupId>log4j</groupId>
	<artifactId>log4j</artifactId>
	<version>1.2.16</version>
</dependency>

好了,然后在配置好log4j配置文件就好了

<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE log4j:configuration SYSTEM "http://toolkit.alibaba-inc.com/dtd/log4j/log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" threshold="null" debug="null">
    <!-- ===================================================================== -->
    <!--  appender definitions                                                 -->
    <!-- ===================================================================== -->
   
    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
      <layout class="org.apache.log4j.PatternLayout">
	  <param name="ConversionPattern" value="%-4r [%t] %-5p %c %x - %m%n" />
      </layout>
    </appender>

    <!-- ===================================================================== -->
    <!--  logger definition                                                    -->
    <!-- ===================================================================== -->

    <logger name="com.analysis" additivity="true">
	<level value="DEBUG" />
	<appender-ref ref="STDOUT" />
    </logger>

    <!-- ===================================================================== -->
    <!--  Root logger                                                          -->
    <!-- ===================================================================== -->
    <root>
        <level value="debug"/>
        <appender-ref ref="STDOUT"/>
    </root>
</log4j:configuration>

但是在日志输出时你可能会看到这样一条日志:

DEBUG org.apache.ibatis.logging.LogFactory  - Logging initialized using 'org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter.

不要担心,其实slf4j-log4j12-1.6.4jar包中已经将log4j的logger封装后传给了slf4j

org.apache.log4j.Logger log4jLogger;  if(name.equalsIgnoreCase(Logger.ROOT_LOGGER_NAME)) {
      log4jLogger = LogManager.getRootLogger();
 } else {
     log4jLogger = LogManager.getLogger(name);
 }
  slf4jLogger = new Log4jLoggerAdapter(log4jLogger);   loggerMap.put(name, slf4jLogger);

关注第二行红色代码,已将log4jLogger 适配给了 slf4jLogger

 

转载于:https://my.oschina.net/xingda1989/blog/53877

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值