设为首页 收藏本站
查看: 1133|回复: 0

[经验分享] mybatis和spring3整合,控制台输出sql语句.

[复制链接]

尚未签到

发表于 2016-11-28 07:28:56 | 显示全部楼层 |阅读模式
  2013-06-06 21:23  391人阅读 评论(0) 收藏 举报
  项目使用Spring3+MyBatis3整合,但是控制台就是部署出SQL语句,网上找了很多资料,都说是Log4j配置文件的问题,修改了N 边Log4j配置文件依然无效。
  除了SQL 语句,其他都能显示,纠结的很 DSC0000.gif DSC0001.gif
  我的Log4j的配置文件如下

[html]  view plaincopyprint?





  • <?xmlversion="1.0"encoding="UTF-8"?>

  • <!DOCTYPElog4j:configurationSYSTEM"http://toolkit.alibaba-inc.com/dtd/log4j/log4j.dtd">

  • <log4j:configurationxmlns:log4j='http://jakarta.apache.org/log4j/'>
  • <!--=====================================================================-->
  • <!--定义全局输出适配器-->
  • <!--=====================================================================-->

  • <appendername="consoleAppender"class="org.apache.log4j.ConsoleAppender">

  • <layoutclass="org.apache.log4j.PatternLayout">

  • <paramname="ConversionPattern"value="[%d{yyyy-MM-ddHH:mm:ss.SSS}]-[%c]-[%t]%x-%m%n"/>
  • </layout>
  • </appender>

  • <!--MybatisandSQL-->

  • <loggername="org.apache.ibatis"additivity="true">

  • <levelvalue="DEBUG"/>

  • <appender-refref="consoleAppender"/>
  • </logger>


  • <loggername="org.mybatis.spring"additivity="true">

  • <levelvalue="ERROR"/>

  • <appender-refref="consoleAppender"/>
  • </logger>

  • <loggername="java.sql"additivity="true">

  • <levelvalue="DEBUG"/>

  • <appender-refref="consoleAppender"/>
  • </logger>


  • <loggername="java.sql.Connection"additivity="true">

  • <levelvalue="DEBUG"/>

  • <appender-refref="consoleAppender"/>
  • </logger>


  • <loggername="java.sql.Statement"additivity="true">

  • <levelvalue="DEBUG"/>

  • <appender-refref="consoleAppender"/>
  • </logger>


  • <loggername="java.sql.PreparedStatement"additivity="true">

  • <levelvalue="DEBUG"/>

  • <appender-refref="consoleAppender"/>
  • </logger>

  • <!--Spring-->

  • <loggername="org.springframework"additivity="true">

  • <levelvalue="ERROR"/>

  • <appender-refref="consoleAppender"/>
  • </logger>

  • <!--ActiveMQ-->

  • <loggername="org.apache.activemq"additivity="true">

  • <levelvalue="ERROR"/>

  • <appender-refref="consoleAppender"/>
  • </logger>
  • <!--=====================================================================-->
  • <!--根日志记录器-->
  • <!--=====================================================================-->
  • <root>

  • <levelvalue="DEBUG"/>

  • <appender-refref="consoleAppender"/>
  • </root>
  • </log4j:configuration>



<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "http://toolkit.alibaba-inc.com/dtd/log4j/log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
<!-- ===================================================================== -->
<!--  定义全局输出适配器                                                      -->
<!-- ===================================================================== -->
<appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}]-[%c]-[%t] %x - %m%n"/>
</layout>
</appender>
<!-- Mybatis and SQL -->
<logger name="org.apache.ibatis" additivity="true">
<level value="DEBUG"/>
<appender-ref ref="consoleAppender"/>
</logger>
<logger name="org.mybatis.spring" additivity="true">
<level value="ERROR"/>
<appender-ref ref="consoleAppender"/>
</logger>
<logger name="java.sql" additivity="true">
<level value="DEBUG"/>
<appender-ref ref="consoleAppender"/>
</logger>
<logger name="java.sql.Connection" additivity="true">
<level value="DEBUG"/>
<appender-ref ref="consoleAppender"/>
</logger>
<logger name="java.sql.Statement" additivity="true">
<level value="DEBUG"/>
<appender-ref ref="consoleAppender"/>
</logger>
<logger name="java.sql.PreparedStatement" additivity="true">
<level value="DEBUG"/>
<appender-ref ref="consoleAppender"/>
</logger>
<!-- Spring -->
<logger name="org.springframework" additivity="true">
<level value="ERROR"/>
<appender-ref ref="consoleAppender"/>
</logger>
<!-- ActiveMQ -->
<logger name="org.apache.activemq" additivity="true">
<level value="ERROR"/>
<appender-ref ref="consoleAppender"/>
</logger>
<!-- ===================================================================== -->
<!--  根日志记录器                                                          -->
<!-- ===================================================================== -->
<root>
<level value="DEBUG"/>
<appender-ref ref="consoleAppender"/>
</root>
</log4j:configuration>
  最后,仔细查看启动时的输入发现了如下的错误提示
  log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
log4j:WARN Please initialize the log4j system properly.

  于是,我想是不是这个地方出问题了呢,赶紧上网搜索解决这个问题的资料。网上找到一个解释:
  地址:http://lveyo.iyunv.com/blog/418376
  这个提示应该是读入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的配置,部分配置文件如下

[html]  view plaincopyprint?





  • <!--Log4j配置-->
  • <context-param>

  • <param-name>log4jConfigLocation</param-name>

  • <param-value>/WEB-INF/log4j.xml</param-value>
  • </context-param>
  • <context-param>

  • <param-name>log4jRefreshInterval</param-name>

  • <param-value>60000</param-value>
  • </context-param>
  • <listener>

  • <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  • </listener>

  • <!--扫描spring配置文件-->
  • <context-param>

  • <param-name>contextConfigLocation</param-name>

  • <param-value>classpath:spring/application-*.xml</param-value>
  • </context-param>

  • <!--监听器-->
  • <listener>

  • <listener-class>com.hanvon.iface.web.listener.WebAppEventListener</listener-class>
  • </listener>
  • .......



<!--Log4j配置-->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.xml</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<!-- 扫描spring配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/application-*.xml</param-value>
</context-param>
<!-- 监听器 -->
<listener>
<listener-class>com.hanvon.iface.web.listener.WebAppEventListener</listener-class>
</listener>
.......
  增加了上面的Log4j配置部分后,结果真的可以打印SQL 语句了,太高兴了 DSC0002.gif !!!
  我觉得,起作用的主要是下面的配置内容,这个配置正确设置了Log4j:

[html]  view plaincopyprint?





  • <context-param>

  • <param-name>log4jConfigLocation</param-name>

  • <param-value>/WEB-INF/log4j.xml</param-value>
  • </context-param>
  • <context-param>

  • <param-name>log4jRefreshInterval</param-name>

  • <param-value>60000</param-value>
  • </context-param>
  • <listener>

  • <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  • </listener>



<context-param>  
<param-name>log4jConfigLocation</param-name>  
<param-value>/WEB-INF/log4j.xml</param-value>  
</context-param>  
<context-param>  
<param-name>log4jRefreshInterval</param-name>  
<param-value>60000</param-value>  
</context-param>  
<listener>  
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>  
</listener>


  部分SQL语句输出如下:

[plain]  view plaincopyprint?





  • [2013-06-0621:07:35.040]-[java.sql.PreparedStatement]-[http-8080-2]-==>Executing:SELECTCOUNT(DISTINCTdev.ng_id)FROMdev_devicedevWHEREdev.nt_state=?
  • [2013-06-0621:07:35.040]-[java.sql.PreparedStatement]-[http-8080-2]-==>Executing:SELECTCOUNT(DISTINCTdev.ng_id)FROMdev_devicedevWHEREdev.nt_state=?
  • [2013-06-0621:07:35.040]-[java.sql.PreparedStatement]-[http-8080-1]-==>Parameters:
  • [2013-06-0621:07:35.040]-[java.sql.PreparedStatement]-[http-8080-1]-==>Parameters:
  • [2013-06-0621:07:35.040]-[java.sql.PreparedStatement]-[http-8080-2]-==>Executing:SELECTCOUNT(DISTINCTdev.ng_id)FROMdev_devicedevWHEREdev.nt_state=?
  • [2013-06-0621:07:35.040]-[java.sql.PreparedStatement]-[http-8080-1]-==>Parameters:
  • [2013-06-0621:07:35.041]-[java.sql.PreparedStatement]-[http-8080-2]-==>Parameters:1(Integer)
  • [2013-06-0621:07:35.041]-[java.sql.PreparedStatement]-[http-8080-2]-==>Parameters:1(Integer)
  • [2013-06-0621:07:35.041]-[java.sql.PreparedStatement]-[http-8080-2]-==>Parameters:1(Integer)
  • [2013-06-0621:07:35.079]-[java.sql.ResultSet]-[http-8080-2]-<==Columns:COUNT(DISTINCTdev.ng_id)
  • [2013-06-0621:07:35.079]-[java.sql.ResultSet]-[http-8080-2]-<==Columns:COUNT(DISTINCTdev.ng_id)
  • [2013-06-0621:07:35.087]-[java.sql.ResultSet]-[http-8080-2]-<==Row:11
  • [2013-06-0621:07:35.087]-[java.sql.ResultSet]-[http-8080-2]-<==Row:11




  项目使用Spring3+MyBatis3整合,但是控制台就是部署出SQL语句,网上找了很多资料,都说是Log4j配置文件的问题,修改了N 边Log4j配置文件依然无效。
  除了SQL 语句,其他都能显示,纠结的很
  我的Log4j的配置文件如下

[html]  view plaincopyprint?





  • <?xmlversion="1.0"encoding="UTF-8"?>

  • <!DOCTYPElog4j:configurationSYSTEM"http://toolkit.alibaba-inc.com/dtd/log4j/log4j.dtd">

  • <log4j:configurationxmlns:log4j='http://jakarta.apache.org/log4j/'>
  • <!--=====================================================================-->
  • <!--定义全局输出适配器-->
  • <!--=====================================================================-->

  • <appendername="consoleAppender"class="org.apache.log4j.ConsoleAppender">

  • <layoutclass="org.apache.log4j.PatternLayout">

  • <paramname="ConversionPattern"value="[%d{yyyy-MM-ddHH:mm:ss.SSS}]-[%c]-[%t]%x-%m%n"/>
  • </layout>
  • </appender>

  • <!--MybatisandSQL-->

  • <loggername="org.apache.ibatis"additivity="true">

  • <levelvalue="DEBUG"/>

  • <appender-refref="consoleAppender"/>
  • </logger>


  • <loggername="org.mybatis.spring"additivity="true">

  • <levelvalue="ERROR"/>

  • <appender-refref="consoleAppender"/>
  • </logger>

  • <loggername="java.sql"additivity="true">

  • <levelvalue="DEBUG"/>

  • <appender-refref="consoleAppender"/>
  • </logger>


  • <loggername="java.sql.Connection"additivity="true">

  • <levelvalue="DEBUG"/>

  • <appender-refref="consoleAppender"/>
  • </logger>


  • <loggername="java.sql.Statement"additivity="true">

  • <levelvalue="DEBUG"/>

  • <appender-refref="consoleAppender"/>
  • </logger>


  • <loggername="java.sql.PreparedStatement"additivity="true">

  • <levelvalue="DEBUG"/>

  • <appender-refref="consoleAppender"/>
  • </logger>

  • <!--Spring-->

  • <loggername="org.springframework"additivity="true">

  • <levelvalue="ERROR"/>

  • <appender-refref="consoleAppender"/>
  • </logger>

  • <!--ActiveMQ-->

  • <loggername="org.apache.activemq"additivity="true">

  • <levelvalue="ERROR"/>

  • <appender-refref="consoleAppender"/>
  • </logger>
  • <!--=====================================================================-->
  • <!--根日志记录器-->
  • <!--=====================================================================-->
  • <root>

  • <levelvalue="DEBUG"/>

  • <appender-refref="consoleAppender"/>
  • </root>
  • </log4j:configuration>



<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "http://toolkit.alibaba-inc.com/dtd/log4j/log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
<!-- ===================================================================== -->
<!--  定义全局输出适配器                                                      -->
<!-- ===================================================================== -->
<appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}]-[%c]-[%t] %x - %m%n"/>
</layout>
</appender>
<!-- Mybatis and SQL -->
<logger name="org.apache.ibatis" additivity="true">
<level value="DEBUG"/>
<appender-ref ref="consoleAppender"/>
</logger>
<logger name="org.mybatis.spring" additivity="true">
<level value="ERROR"/>
<appender-ref ref="consoleAppender"/>
</logger>
<logger name="java.sql" additivity="true">
<level value="DEBUG"/>
<appender-ref ref="consoleAppender"/>
</logger>
<logger name="java.sql.Connection" additivity="true">
<level value="DEBUG"/>
<appender-ref ref="consoleAppender"/>
</logger>
<logger name="java.sql.Statement" additivity="true">
<level value="DEBUG"/>
<appender-ref ref="consoleAppender"/>
</logger>
<logger name="java.sql.PreparedStatement" additivity="true">
<level value="DEBUG"/>
<appender-ref ref="consoleAppender"/>
</logger>
<!-- Spring -->
<logger name="org.springframework" additivity="true">
<level value="ERROR"/>
<appender-ref ref="consoleAppender"/>
</logger>
<!-- ActiveMQ -->
<logger name="org.apache.activemq" additivity="true">
<level value="ERROR"/>
<appender-ref ref="consoleAppender"/>
</logger>
<!-- ===================================================================== -->
<!--  根日志记录器                                                          -->
<!-- ===================================================================== -->
<root>
<level value="DEBUG"/>
<appender-ref ref="consoleAppender"/>
</root>
</log4j:configuration>
  最后,仔细查看启动时的输入发现了如下的错误提示
  log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
log4j:WARN Please initialize the log4j system properly.

  于是,我想是不是这个地方出问题了呢,赶紧上网搜索解决这个问题的资料。网上找到一个解释:
  地址:http://lveyo.iyunv.com/blog/418376
  这个提示应该是读入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的配置,部分配置文件如下

[html]  view plaincopyprint?





  • <!--Log4j配置-->
  • <context-param>

  • <param-name>log4jConfigLocation</param-name>

  • <param-value>/WEB-INF/log4j.xml</param-value>
  • </context-param>
  • <context-param>

  • <param-name>log4jRefreshInterval</param-name>

  • <param-value>60000</param-value>
  • </context-param>
  • <listener>

  • <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  • </listener>

  • <!--扫描spring配置文件-->
  • <context-param>

  • <param-name>contextConfigLocation</param-name>

  • <param-value>classpath:spring/application-*.xml</param-value>
  • </context-param>

  • <!--监听器-->
  • <listener>

  • <listener-class>com.hanvon.iface.web.listener.WebAppEventListener</listener-class>
  • </listener>
  • .......



<!--Log4j配置-->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.xml</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<!-- 扫描spring配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/application-*.xml</param-value>
</context-param>
<!-- 监听器 -->
<listener>
<listener-class>com.hanvon.iface.web.listener.WebAppEventListener</listener-class>
</listener>
.......
  增加了上面的Log4j配置部分后,结果真的可以打印SQL 语句了,太高兴了!!!
  我觉得,起作用的主要是下面的配置内容,这个配置正确设置了Log4j:

[html]  view plaincopyprint?





  • <context-param>

  • <param-name>log4jConfigLocation</param-name>

  • <param-value>/WEB-INF/log4j.xml</param-value>
  • </context-param>
  • <context-param>

  • <param-name>log4jRefreshInterval</param-name>

  • <param-value>60000</param-value>
  • </context-param>
  • <listener>

  • <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  • </listener>



<context-param>  
<param-name>log4jConfigLocation</param-name>  
<param-value>/WEB-INF/log4j.xml</param-value>  
</context-param>  
<context-param>  
<param-name>log4jRefreshInterval</param-name>  
<param-value>60000</param-value>  
</context-param>  
<listener>  
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>  
</listener>
  


  部分SQL语句输出如下:

[plain]  view plaincopyprint?





  • [2013-06-0621:07:35.040]-[java.sql.PreparedStatement]-[http-8080-2]-==>Executing:SELECTCOUNT(DISTINCTdev.ng_id)FROMdev_devicedevWHEREdev.nt_state=?
  • [2013-06-0621:07:35.040]-[java.sql.PreparedStatement]-[http-8080-2]-==>Executing:SELECTCOUNT(DISTINCTdev.ng_id)FROMdev_devicedevWHEREdev.nt_state=?
  • [2013-06-0621:07:35.040]-[java.sql.PreparedStatement]-[http-8080-1]-==>Parameters:
  • [2013-06-0621:07:35.040]-[java.sql.PreparedStatement]-[http-8080-1]-==>Parameters:
  • [2013-06-0621:07:35.040]-[java.sql.PreparedStatement]-[http-8080-2]-==>Executing:SELECTCOUNT(DISTINCTdev.ng_id)FROMdev_devicedevWHEREdev.nt_state=?
  • [2013-06-0621:07:35.040]-[java.sql.PreparedStatement]-[http-8080-1]-==>Parameters:
  • [2013-06-0621:07:35.041]-[java.sql.PreparedStatement]-[http-8080-2]-==>Parameters:1(Integer)
  • [2013-06-0621:07:35.041]-[java.sql.PreparedStatement]-[http-8080-2]-==>Parameters:1(Integer)
  • [2013-06-0621:07:35.041]-[java.sql.PreparedStatement]-[http-8080-2]-==>Parameters:1(Integer)
  • [2013-06-0621:07:35.079]-[java.sql.ResultSet]-[http-8080-2]-<==Columns:COUNT(DISTINCTdev.ng_id)
  • [2013-06-0621:07:35.079]-[java.sql.ResultSet]-[http-8080-2]-<==Columns:COUNT(DISTINCTdev.ng_id)
  • [2013-06-0621:07:35.087]-[java.sql.ResultSet]-[http-8080-2]-<==Row:11
  • [2013-06-0621:07:35.087]-[java.sql.ResultSet]-[http-8080-2]-<==Row:11

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-306324-1-1.html 上篇帖子: mybatis 批量增加 Parameter '__frch_item_0' not found. Available parameters are [lis 下篇帖子: 解释Mybatis中TypeHandle怎么处理特殊数据类型? [来自qq空间]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表