`
13146489
  • 浏览: 245911 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

mybatis打印sql

    博客分类:
  • J2EE
阅读更多
mybatis默认使用log4j,当有self4j这个日志jar包存在时会无法打印sql,请移除或者在工程启动时显示设置mybatis使用的日志类
log4j.logger.org.apache.ibatis=debug,stdout
log4j.logger.java.sql=debug,stdout


---------------------------------------------------------------
今天又碰到按照上面那样做了还是没有打印sql,原因在于不可能移除self4j包,因为其他依赖包必须依赖这个包,。。。。不得已又去查资料。
mybatis有如下方法来手动选择日志类,调用后成功打印日志
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();

注意:If you choose to call one of these methods, you should do so before calling any other MyBatis
method.
Also, these methods will only switch to the requested log implementation if that
implementation is available on the runtime classpath. For example, if you try to select Log4J logging
and Log4J is not available at runtime, then MyBatis will ignore the request to use Log4J and will use
it's normal algorithm for discovering logging implementations.

针对红色的那段字。我使用的是spring,在spring启动的时候调用LogFactory.useLog4JLogging();打印成功
分享到:
评论
9 楼 angole 2014-10-09  
不错,又学习到了。
8 楼 hft24dq 2013-10-28  
rxcss66 写道
个人没有搞明白什么原理,不过跟一楼说的一样,如果引用了slf4j的包,并且要使用log4j需要加入slf4j-log4j12的包,如果没有加入slf4j-log4j12的包是无法打印sql的。
刚刚试过。具体log4j文件如下:
log4j.rootCategory=info, stdout , R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=D:\\report.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n

log4j.logger.com.ibatis=debug
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug

log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug,stdout


请问如此配置,sql信息打印到哪里了?

我现在的问题是,sql心可以在控台打印,但是无法打印到文件里面去。
7 楼 fireinjava 2013-06-09  
fireinjava 写道
org.apache.ibatis.logging.LogFactory.useSlf4jLogging();
+1 

log4j.rootLogger=DEBUG
另外还要设置这个
6 楼 fireinjava 2013-06-09  
org.apache.ibatis.logging.LogFactory.useSlf4jLogging();
+1 
5 楼 rxcss66 2012-09-10  
个人没有搞明白什么原理,不过跟一楼说的一样,如果引用了slf4j的包,并且要使用log4j需要加入slf4j-log4j12的包,如果没有加入slf4j-log4j12的包是无法打印sql的。
刚刚试过。具体log4j文件如下:
log4j.rootCategory=info, stdout , R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=D:\\report.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n

log4j.logger.com.ibatis=debug
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug

log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug,stdout
4 楼 lees 2012-05-25  
mark 试试
3 楼 akwolf 2011-12-21  
好方法,赞一个!!
2 楼 13146489 2011-12-16  
hellostory 写道
楼主你的观点会误导人的!
SLF4J不是具体的日志解决方案,它只服务于各种各样的日志系统。
若要再slf4j中使用log4j,需要加入slf4j-log4j12-1.6.4.jar包!

谢谢您的提醒。呵呵
1 楼 hellostory 2011-12-12  
楼主你的观点会误导人的!
SLF4J不是具体的日志解决方案,它只服务于各种各样的日志系统。
若要再slf4j中使用log4j,需要加入slf4j-log4j12-1.6.4.jar包!

相关推荐

Global site tag (gtag.js) - Google Analytics