2013-06-06 21:23 391人阅读 评论(0) 收藏 举报
项目使用Spring3+MyBatis3整合,但是控制台就是部署出SQL语句,网上找了很多资料,都说是Log4j配置文件的问题,修改了N 边Log4j配置文件依然无效。
除了SQL 语句,其他都能显示,纠结的很
我的Log4j的配置文件如下:
- <?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.iteye.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的配置,部分配置文件如下:
- <!--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:
- <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语句输出如下:
- [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的配置文件如下:
- <?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.iteye.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的配置,部分配置文件如下:
- <!--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:
- <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语句输出如下:
- [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
相关推荐
在MyBatis与Spring整合的框架中,为了便于调试和性能优化,我们常常需要在日志中打印出执行的SQL语句。以下是如何在这样的环境中配置日志来显示SQL语句的详细步骤。 首先,我们需要了解MyBatis的日志实现。MyBatis...
- 编译并运行主程序,检查控制台输出,确认应用启动无误,MyBatis和Spring是否成功集成。 - 可以通过编写单元测试或者使用Spring Boot的Actuator端点来验证数据库操作是否正常。 通过这个完整的demo,开发者可以...
- 使用IDE运行项目,通过HTTP请求调用Service层的方法,观察控制台输出,验证MyBatis的SQL执行和Spring的事务管理是否正常。 总之,Spring和MyBatis的结合使得开发人员能够更专注于业务逻辑,而无需过多关注底层的...
首先,MyBatis是一个轻量级的SQL映射框架,它允许开发者将SQL语句直接写在XML配置文件中,避免了传统的JDBC代码编写,极大地提高了开发效率。而Spring作为一款全面的企业级应用框架,不仅包含了IoC(Inversion of ...
在Spring Boot集成MyBatis的项目中,有时候我们需要在控制台打印SQL日志,以便于调试和优化数据库操作。本文将详细介绍如何配置Spring Boot和MyBatis以实现控制台打印SQL日志的功能。 首先,Spring Boot默认使用的...
- 运行项目,通过浏览器访问测试接口,观察控制台输出和页面响应,验证整合是否成功。 6. **学习要点**: - 理解各框架的核心概念和工作原理。 - 掌握各框架的配置文件编写。 - 学习如何在Java代码中使用注解...
使用标准日志输出方法,我们只需要在MyBatis3的配置文件中添加相应的设置,即可输出SQL语句。使用log4j日志输出方法,我们需要在mybatis.xml文件中添加相应的设置,并在spring-mybatis.xml文件中添加相应的配置。 ...
首先,问题背景是开发人员在编写SQL语句时,通常需要结合控制台输出和数据库管理工具(如Navicat或PLSQL)来检查和验证SQL的正确性。如果只看到占位符(例如“?”),而看不到实际的参数值,这将大大降低工作效率。...
Mybatis是一个轻量级的持久层框架,它将SQL语句与Java代码分离,使得数据库操作更加灵活和可控。而Spring框架则是一个全方位的应用开发框架,提供了包括依赖注入、面向切面编程、事务管理等众多功能。当Mybatis与...
- **Mapper XML文件**:在`src/main/resources`下创建对应的Mapper XML文件,编写SQL语句。 - **Service层**:在Service层中通过@Autowired注解注入Mapper接口,调用其方法实现业务逻辑。 2. **运行与调试** -...
在实际开发中,我们通常需要将 MyBatis 的 SQL 语句打印出来,以便更好地调试和优化应用程序。下面我们将详细介绍如何在 IDEA 中配置 MyBatis 打印 SQL 语句的示例。 Log4j 的基本概念 Log4j 是一个流行的日志记录...
在本项目中,“Spring整合Mybatis简单项目”旨在教授初学者如何将两个流行的Java框架——Spring和Mybatis结合,以实现一个简单的影视资源管理系统。这个系统可能会包括资源的增删改查、分类管理等功能,帮助用户高效...
- **Mapper接口和XML文件**:创建Mapper接口,如`UserMapper`,并在对应的XML文件中编写SQL语句。 6. **测试执行,输出结果** 使用Spring的JUnit测试框架编写测试类,注入需要的Service和Mapper,执行测试方法,...
【SpringBoot整合Mybatis】是现代Java开发中常见的技术栈组合,它将Spring Boot的便捷性和Mybatis的灵活性结合在一起,极大地简化了Web应用的搭建和数据库操作。在这个开发系统中,我们关注的是如何在Spring Boot...
通过这个文件,MyBatis知道如何查找和处理SQL语句。 这些配置文件的组合使用,使得开发人员可以构建出一个高效、可扩展且易于维护的Web应用。在实际开发中,这些配置文件的详细设定将直接影响到程序的性能、稳定性...
- 观察控制台输出和数据库操作结果,验证数据是否能够正确地从数据库中读取和写入。 #### 四、实验结果与分析 通过本次实验,成功实现了Spring与MyBatis框架的集成,并完成了简单的数据访问操作。实验过程中遇到了...
Spring Boot 可以将日志输出到控制台或文件中。我们可以通过配置 logging.file 属性或 logging.path 属性来控制日志的输出目标。 例如,我们可以将日志输出到文件中: logging.file= logback.log logging.path= /...
3. **MyBatis框架**:MyBatis是一个轻量级的持久层框架,它允许开发者编写SQL语句,将SQL与Java代码分离,提供了动态SQL的功能。MyBatis的配置文件(mybatis-config.xml)包含了数据源、事务管理器等信息,Mapper...
这将引入MyBatis Spring Boot Starter和MySQL驱动,以便我们能连接到MySQL数据库并执行SQL语句。 然后,我们需要配置数据库连接。在`src/main/resources`目录下创建`application.properties`文件,添加如下内容: `...
通过XML或注解配置,MyBatis可以将接口方法与SQL语句进行绑定,使得数据库操作更加简洁和灵活。 三、SpringMVC与MyBatis整合 整合SpringMVC和MyBatis,首先需要在Spring的配置文件中声明DataSource、...