log4jdbc 使用
2018-01-04 本文已影响0人
马木木
像hibernate mybatis这些在打印sql时用了占位符表示参数,不能只能拷贝到数据库工具中执行,但是log4jdbc可以
1.引入jar包
可以在maven仓库和谷歌提供的网站下载
https://code.google.com/archive/p/log4jdbc/downloads
可以根据自身的环境下载相应版本的
由于其需要依赖slf4j
所以你的项目中也需要有
我的系统的日志用的是log4j
所以这里边包含的有
- log4jdbc4-1.2.jar
- log4j-1.2.12.jar
- slf4j-log4j12-1.7.21.jar
- slf4j-api-1.6.1.jar
A.普通项目(非spring)
普通的项目比较简单 稍微修改数据库的驱动和连接池即可
修改前
oracle.jdbc.driver.OracleDriver
jdbc:oracle:thin:@192.168.7.14:1521:orcl
修改后
net.sf.log4jdbc.DriverSpy
jdbc:log4jdbc:oracle:thin:@127.0.0.1:1521:orcl
改变了驱动 在url中加入了log4jdbc
在log4j.properties
配置文件中加入参数
log4j.logger.jdbc.sqlonly=INFO
log4j.logger.jdbc.sqltiming=ERROR
log4j.logger.jdbc.audit=ERROR
log4j.logger.jdbc.resultset=ERROR
log4j.logger.jdbc.connection=ERROR
我这里配置的是只显示sql,要不然连resultset都打印出来多的一笔
B.spring项目(收集未尝试)
除了修改驱动和url还需要修改下datasource的定义
<bean id="dataSourceSpied" class="...">
<property name="driverClass" value="${jdbc.driverClassName}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
...
</bean>
<!-- 注意:其它引用(如事务管理配置),用dataSource,而不是dataSourceSpied -->
<bean id="dataSource" class="net.sf.log4jdbc.Log4jdbcProxyDataSource">
<constructor-arg ref="dataSourceSpied" />
</bean>