日期:2014-05-16  浏览次数:20443 次

打印JdbcTemplate执行sql

有关log4j的基础知识请参考log4j详解与实战,本文主要讲解Spring对log4j的增强。

lo4j有2个不方便的地方

  1. log4j的配置文件修改后必须重启才能生效。
  2. 配置文件只能放在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

1 楼 evan_shen 2011-12-30  
貌似不能输出参数啊