有关log4j的基础知识请参考log4j详解与实战,本文主要讲解Spring对log4j的增强。
lo4j有2个不方便的地方
- log4j的配置文件修改后必须重启才能生效。
- 配置文件只能放在WEB-INF/classes目录下。
Spring对 log4j做了更好的增强,下面是要在web.xml中增加的配置参数。
<!--如果不定义webAppRootKey参数,那么webAppRootKey就是缺省的"webapp.root"-->
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>RootPath</param-value>
</context-param>
<!--由Sprng载入的Log4j配置文件位置-->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:conf/log4j.xml</param-value>
</context-param>
<!--Spring默认刷新Log4j配置文件的间隔,单位为毫秒-->
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
<!--Spring log4j Config loader-->
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
注意:第一个参数webAppRootKey如果只有一个应用用了Spring对Log4J的增强,则可以不用设置;否则一定要进行设置。
日志文件每天产生一个。{RootPath}即系统的跟路径下。
<!--DEBUG信息输出-->
<appender name="LOG.DEBUG" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="${RootPath}/logs/debug_" />
<param name="DatePattern" value="yyyy-MM-dd'.log'" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%p] [%C-%M] %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="DEBUG" />
</filter>
</appender>
注意:当日的日志文件是以debug_形式存在的,只有到了下一日才会把昨日的日志文件重名民为debug_2010--03-09.log形式,因此测试的时候需要手工修改系统的时间。
因为系统中主要使用JdbcTemplate,因此查看实际执行的sql不是很方面,这就需要把执行的sql语句打印出来。
<!--自定义的日志输出器 -->
<logger name="org.springframework.jdbc.core" additivity="true">
<level value="DEBUG" />
<!-- 日志输出地 -->
<appender-ref ref="LOG.DEBUG" />
</logger>
<logger name="java.sql.Connection" additivity="true">
<level value="DEBUG" />
<appender-ref ref="LOG.DEBUG" />
</logger>
<logger name="java.sql.Statement" additivity="true">
<level value="DEBUG" />
<appender-ref ref="LOG.DEBUG" />
</logger>
<logger name="java.sql.PreparedStatement" additivity="true">
<level value="DEBUG" />
<appender-ref ref="LOG.DEBUG" />
</logger>
<logger name="java.sql.ResultSet" additivity="true">
<level value="DEBUG" />
<appender-ref ref="LOG.DEBUG" />
</logger>
注意:org.springframework.jdbc.core的level级别只能是debug,Connection Statement PreparedStatement ResultSet 这四个日志输出器都是不能少的。
附加是自己配置好的log4j.xml
分享到:
相关推荐
4. 数据访问层通过JdbcTemplate执行SQL操作,例如查询、插入、更新或删除记录。 5. 完成数据库操作后,Action将结果返回给Struts,Struts再决定展示哪个视图(可能是JSP页面)。 这个Demo可能包含以下关键文件: -...
在实际应用中,我们可以在执行SQL之前调用这个方法,比如在上述示例的`query`函数中,先调用`printRealSql`打印SQL,然后再执行查询操作: ```java public static Map, Object> query(Connection conn, String sql,...
在上面的代码中,我们使用了 JdbcTemplate 来执行一个 SQL 语句。当我们执行这个方法时,Log4jdbc 将打印出完整的 SQL 语句,包括参数 replacement: ``` DEBUG [main] JDBC - { conn:100, pstmt:102, sql:SELECT * ...
`JdbcTemplate`作为Spring JDBC的核心类,主要负责执行SQL语句并处理结果集。通过使用不同的方法,它可以支持各种类型的数据库查询和更新操作。这些方法通常被设计为易于理解和使用,同时提供了良好的错误处理机制。...
在`main`方法中,通过`jdbcTemplate`执行SQL查询,获取`SqlRowSet`对象,然后遍历结果集打印用户真实姓名(`USER_REAL_NAME`)。这展示了JdbcTemplate的基本用法,即通过调用其提供的方法执行SQL并处理结果。 ...
如果需要批量执行SQL语句,JdbcTemplate还提供了`batchUpdate()`方法,可以一次执行多个更新操作。 9. **性能优化**: JdbcTemplate通过缓存预编译的SQL语句(PreparedStatement),提高了性能,并且可以避免多次...
总之,通过JSP访问SQL Server 05数据库,你需要配置JDBC驱动,编写Java代码来建立连接,执行SQL操作,最后记得关闭连接。这个过程对于任何需要与数据库交互的Java Web应用都是至关重要的。在`SuperMarket`这个示例中...
这个例子展示了如何通过`JdbcTemplate`执行SQL查询并返回结果。 总的来说,IDEA连接PostgreSQL数据库操作涵盖了从配置数据源、修改`pg_hba.conf`到使用Spring Boot进行数据库连接和查询的全过程。理解这些步骤将...
4. **执行SQL**:通过`Statement`或`PreparedStatement`对象的`executeQuery()`或`executeUpdate()`方法执行SQL查询或更新。 5. **处理结果集**:对于`executeQuery()`返回的结果,我们可以使用`ResultSet`来遍历...
另外,`spring.jpa.show-sql`设置为`true`可以打印出执行的SQL语句,便于调试。 ```properties spring.jpa.hibernate.ddl-auto=none spring.jpa.show-sql=true ``` 4. **实体类定义** 使用`@Entity`注解标记实体...
在上面的示例中,我们使用 `JdbcTemplate` 对象来执行一个 SQL 查询,并将结果存储在 `List` 中。然后,我们遍历结果集,打印出每一行数据。 总结 在这篇文章中,我们介绍了 JDBC Template 的基本使用方法,从依赖...
通常我们会创建一个数据库工具类,封装数据库连接的获取和释放,以及执行SQL语句的方法。例如,使用JdbcTemplate或者SqlSession进行CRUD操作,保证代码的简洁和易维护。 7. **IDEA开发环境**: IDEA是Java开发的...
Base64是一种常见的数据编码方法,它将二进制数据转化为可打印的ASCII字符,以便在网络传输中进行安全地处理。在图片上传的场景中,Base64编码可以将图片转换为字符串形式,然后存储在数据库的文本字段中。 Spring...
此处假设使用Spring JDBC,我们先创建对应的DAO接口和实现类,然后调用`JDBCUtils`工具类获取数据库连接并执行SQL。 ```java // RecruitmentDAO.java public interface RecruitmentDAO { void insertRecruitment...
然后实现这个接口,使用`JdbcTemplate`执行SQL查询: ```java public interface MyIpService { List<MyIp> getAll_IP(); } @Service public class MyIpServiceImpl implements MyIpService { @Autowired ...
- **show_sql的配置**:通过设置`show_sql`为`true`可以在控制台打印出Hibernate执行的所有SQL语句,这对于调试非常有用。 - **format_sql配置**:如果设置了`format_sql`为`true`,那么控制台上显示的SQL语句将被...
- 在Spring MVC中,我们可以使用JdbcTemplate或NamedParameterJdbcTemplate来执行SQL语句,这两个工具类简化了与数据库的交互。 - 配置MySQL数据源时,需要提供相应的驱动类、URL、用户名和密码。例如,使用`...
要从数据库获取数据并在前端展示,我们需要创建一个`Controller`,注入`JdbcTemplate`来执行SQL查询。例如: ```java @RestController public class TestController { @Autowired private JdbcTemplate ...