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

jdbc日志,Log4jbdc-remix使用

?? 做项目的时候给jdbc做日志,只打印出代?号的sql。个人觉得真没有太大的参考价值。由是看看有没有给jdbc做日志的框架。找到了log4jdbc,但是觉得还不是很理想,由是又看了看,还有一个护展插件log4jdbc-remix。先不扯这么多,先来教大家怎么使用吧。

?

1、加入依赖jar

使用这个插件依赖4个类:log4j,slf4j-log4j,slf4j-api,log4j-remix



?

?

引入这四个依赖jar

2、配置数据源代理

那么再来配置代理连接池,这里代理spring的连接池:

<context:property-placeholder location="classpath:/dataSource.properties" />
	<!-- 使用cglib代理 -->
	<aop:aspectj-autoproxy proxy-target-class="true" />

	<!-- jdbc datasource -->

	<bean id="dataSourceSpied" class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">
		<property name="driverClassName" value="${jdbc.driverClassName}" />
		<property name="url" value="${jdbc.url}" />
		<property name="username" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />
		<!-- Connection Pooling Info -->
		<property name="initialSize" value="1" />
		<property name="maxActive" value="3" />
		<property name="minIdle" value="1" />
		<property name="maxIdle" value="5" />
		<property name="maxWait" value="30000" />
		<property name="removeAbandoned">
			<value>true</value>
		</property>
		<property name="removeAbandonedTimeout">
			<value>180</value>
		</property>
		<property name="poolPreparedStatements" value="false" />
		<property name="defaultAutoCommit" value="true" />
	</bean>
	
	<bean id="dataSource" class="net.sf.log4jdbc.Log4jdbcProxyDataSource">
    	<constructor-arg ref="dataSourceSpied" />
  	</bean>

?

其他就可以不变,当然还可以参照官方文档,给输出做一些样式。在这就不详述,后面会付上连接地址

?

3、配置log4j.properties.

完成上面两步,就还有一步,反日志输出来。我这里开发采用输出到控制台:

?

##-------------log4jdbc 配置方式示例---------------##  
#值设置方式 :如果关闭设置为OFF,如果开启设置为ON(默认debug级别)或(设置输出级别,输出器)
#log4j-remix中有一个 jdbc 日志输出点
#只打印出执行sql
#log4j.logger.jdbc.sqlonly=INFO, console
#打印出sql执行所需的时间
log4j.logger.jdbc.sqltiming=INFO,console  
#log4j.logger.jdbc.audit=INFO,console
#打印出执行sql和结果集
log4j.logger.jdbc.resultsettable=INFO, console
#打印出连接情况 
#log4j.logger.jdbc.connection=INFO,consol


#log4j.additivity.jdbc.sqlonly=false  
#log4j.additivity.jdbc.sqltiming=false  
#log4j.additivity.jdbc.audidt=false  
#log4j.additivity.jdbc.resultsettable=false  
#log4j.additivity.jdbc.connection=false  
  
log4j.appender.console=org.apache.log4j.ConsoleAppender  
log4j.appender.console.layout=org.apache.log4j.SimpleLayout 

?你以前做日志的代码可以不用改,加上上面的日志输出配置就行。当然你也可以xml方式配置log4j

?

一切准备就绪,执行下看看:

?

INFO - SELECT count(1) FROM t_active a {executed in 3 msec}
INFO - |---------|
INFO - |COUNT(1) |
INFO - |---------|
INFO - |0        |
INFO - |---------|

?

?

?

4、参考文章

log4jdbc-remix官网:http://code.google.com/p/log4jdbc-remix/

----------------------:依据官网,当前推荐使用 log4jdbc-log4j2.但是目前做日志主要还是用log4j,待以后用log4j2的时候用用

?