项目使用Spring3+MyBatis3整合,但是控制台就是部署出SQL语句,网上找了很多资料,都说是Log4j配置文件的问题,修改了N 边Log4j配置文件依然无效。
除了SQL 语句,其他都能显示,但是sql语句一直不会显示出
我的properties文件:
log4j.rootLogger=ERROR, stdout, CONSOLE,logFile
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c %x - %m%n
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
log4j.appender.logFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logFile.encoding=UTF-8
log4j.appender.logFile.file=${catalina.home}/logs/childWatchApi.log
log4j.appender.logFile.layout=org.apache.log4j.PatternLayout
log4j.appender.logFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
#sql #
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
#spring #
log4j.logger.org.springframework.transaction.interceptor.TransactionInterceptor = DEBUG
#ibatis #
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.jdbc.ScriptRunner=ERROR
log4j.logger.net.sf.ehcache.util=DEBUG
log4j.logger.org.mybatis.caches.ehcache.LoggingEhcache=DEBUG
后来在网上找个很多原因:都是说properties文件问题,或者引入的jar有问题
继续寻找答案在 http://blog.youkuaiyun.com/zht666/article/details/9042373找到了
查看自己启动时也会出现
log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
log4j:WARN Please initialize the log4j system properly.
借用一下:
这个提示应该是读入web应用程序的log4j.properties文件之前就报出来了。是在加载org.springframework.web.context.ContextLoader这个listener的时候没找到log4j的配置文件造成的。
仔细查看web.xml发现在加载org.springframework.web.context.ContextLoader这个listener之后才加载org.springframework.web.util.Log4jConfigListener,把log4j的配置放到org.springframework.web.context.ContextLoader之前,就可以解决这个问题了。
于是,我在web.xml配置文件中加入Log4j的配置,部分配置文件如下:
解决方法:
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
最后终于打印出了sql执行语句:
2015-07-04 15:10:48 DEBUG [http-8080-2] java.sql.Connection - ooo Using Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@41aff40f]
2015-07-04 15:10:48 [java.sql.Connection]-[DEBUG] ==> Preparing: select count(*) from stone_tbl st LEFT JOIN stone_type_tbl stt on st.typeid = stt.id where 1 = 1
2015-07-04 15:10:48 DEBUG [http-8080-2] java.sql.Connection - ==> Preparing: select count(*) from stone_tbl st LEFT JOIN stone_type_tbl stt on st.typeid = stt.id where 1 = 1
2015-07-04 15:10:48 [java.sql.PreparedStatement]-[DEBUG] ==> Parameters:
2015-07-04 15:10:48 DEBUG [http-8080-2] java.sql.PreparedStatement - ==> Parameters: