怎样用Log4j得到当前执行的sql语句

如题所述

mybatis默认使用log4j,当有self4j这个日志jar包存在时会无法打印sql,请移除或者在工程启动时显示设置mybatis使用的日志类:
log4j.logger.org.apache.ibatis=debug,stdout log4j.logger.java.sql=debug,stdout
这样有时可能却不是个可行的办法,原因在于不可能移除self4j包,因为其他依赖包必须依赖这个包。 mybatis有如下方法来手动选择日志类,调用后成功打印日志 如果引用了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.Conversion
Pattern=[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

现在重启tomcat,执行一条语句看看,sql是不是都出来了
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答
大家正在搜