注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

一线天色 天宇星辰

天下武功,唯快不破

 
 
 

日志

 
 

MyBatis下SQL日志无法用Log4j输出到文件问题  

2012-06-07 21:56:15|  分类: 软件开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

最近遇到一个很奇怪的问题,之前使用ibatis+Spring2.5.6,目前有一个新项目,采用了新版本的Mybatis3+Spring3.1.1进行开发,结果发现新的项目运行后,我们的sql日志无法输出到对应的配置文件,但是却能正常输出到控制台(即Tomcat的日志文件中,Log4j的根日志文件)。log4j的配置文件如下所示:

log4j.rootLogger=error,stdout

log4j.additivity.java.sql=false

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

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

log4j.appender.stdout.layout.ConversionPattern=%d %p %m%n

 

log4j.logger.java.sql=debug,sqlLog

log4j.appender.sqlLog=org.apache.log4j.DailyRollingFileAppender

log4j.appender.sqlLog.File=${KEDOU_VIP_LOG_HOME}/sqlLog.log

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

log4j.appender.sqlLog.layout.ConversionPattern=%d %p %m%n

 

log4j.logger.com.shunwang.vip.core.interceptor.UserLoginCheckInterceptor=info,loginLog

log4j.appender.loginLog=org.apache.log4j.DailyRollingFileAppender

log4j.appender.loginLog.File=${KEDOU_VIP_LOG_HOME}/interceptorLog.log

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

log4j.appender.loginLog.layout.ConversionPattern=%d %p %m%n

 

log4j.logger.com.shunwang.vip.front.site.SiteInterfaceAction=info,interfaceLog

log4j.appender.interfaceLog=org.apache.log4j.DailyRollingFileAppender

log4j.appender.interfaceLog.File=${KEDOU_VIP_LOG_HOME}/interfaceLog.log

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

log4j.appender.interfaceLog.layout.ConversionPattern=%d %p %m%n

 

log4j.logger.org.apache.struts=ERROR 

log4j.logger.org.springframework=ERROR 

log4j.logger.org.apache.ibatis=DEBUG

检查了很久,网上也找了很多资料,都声称新版本的是使用xml做日志配置的,使用SLF4J做日志处理的,配置一下,果然能正常输出!但是我这边的项目其他的都采用log4j输出,总不能sql日志单独采用xml配置吧?也不能突然全部却换到xml配置吧?毕竟XML配置还是没有properties的方便。

于是,再次查找资料,总不能一个框架不兼容log4j吧?偶然看到了官方的说明(其实应该先来官方查找的,走了不少弯路)(详情可点击此处)。原来mybatis3是支持多种日志方式的,而我们采用的Spring默认采用了这种方式,因此打印不出来日志。只需要在项目中使用监听器更改默认的日志实用类即可!

Mybatis提供了5中日志方式,如下所示:

   org.apache.ibatis.logging.LogFactory.useSlf4jLogging();

    org.apache.ibatis.logging.LogFactory.useLog4JLogging();

    org.apache.ibatis.logging.LogFactory.useJdkLogging();

    org.apache.ibatis.logging.LogFactory.useCommonsLogging();

    org.apache.ibatis.logging.LogFactory.useStdOutLogging();

而我这边采用的是Log4j,因此只要设置为Log4j,即在监听器中调用LogFactory.useLog4JLogging();即可!

更改代码,添加LogFactory.useLog4JLogging(),运行,终于看到SQL日志文件了!

值得注意的是,此处的LogFactoryorg.apache.ibatis.logging.LogFactory;,不是apacheorg.apache.commons.logging.LogFactory哦!

  评论这张
 
阅读(67429)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017