使用jdbcdslog 跟踪 JDBC-记录带有详细参数值的SQL
jdbcdslog 是一款用来跟踪 JDBC 的全功能工具,记录带有详细参数值的SQL。
特征包括:
- 可挂接到数据库连接, 驱动或数据源上(XA, 连接池)
- 可记录 PreparedStatement 和 CallableStatement 调用所绑定的参数
- 可记录 ResultSet 对象中的查询记录行
- 可记录查询执行时间
- 支持多种日志引擎 (感谢 SLF4J, 你可以使用多数流行的日志组件库, 像 log4j, apache common logging, java logging 或者简单的输出到 System.out)
你有三种选择去配置日志代理:
- 在你的代码中包裹 JDBC 连接.
用下面那样的构造方式:
Connection loggingConnection = ConnectionLoggingProxy.wrap(originalConnection);
- 配置 JDBC Driver 的日志代理.
在这种方法中,你必须使用 org.jdbcdslog.DriverLoggingProxy 来替代你原本的 JDBC Driver 类,并使用 jdbcdslog 的 URL 格式,原连接的 URL 作为它的参数:
jdbc:jdbcdslog:;targetDriver=
- 配置 JDBC 数据源日志代理.
这种方式下,你需要使用 org.jdbcdslog.ConnectionPoolXADataSourceProxy 类来替代你自己的 DataSource 实现类, 还要传递一个值为 DataBase 或 URL 的附加参数 targetDS 作为新的 DataSource 的配置项.
更多信息和配、配置实例、jar 文件和源代码,请参看该项目的网站: http://code.google.com/p/jdbcdslog/.
jdbcdslog支持DataSource(XA,Pooling):
Spring DI
<jee:jndi-lookup id="mssDataSourceActual" jndi-name="${mss.dataSource.main.jndiName}"/>
<bean id="mssDataSource" class="org.jdbcdslog.ConnectionPoolXADataSourceProxy">
<property name="targetDSDirect" ref="mssDataSourceActual" />
</bean>
(jndi的使用,请google)
Weblogic + Oracle
<jdbc-driver-params>
<url>jdbc:oracle:thin:@10.100.53.85:1521:cmn?targetDS=oracle.jdbc.xa.client.OracleXADataSource</url>
<driver-name>org.jdbcdslog.ConnectionPoolXADataSourceProxy</driver-name>
<properties>
<property>
<name>user</name>
<value>mssapp</value>
</property>
<property>
<name>serverName</name>
<value>10.100.53.85</value>
</property>
<property>
<name>portNumber</name>
<value>1521</value>
</property>
<property>
<name>SID</name>
<value>cmn</value>
</property>
</properties>
<password-encrypted>{3DES}ThgsfHr3yB1bfpnD4u/t3A==</password-encrypted>
</jdbc-driver-params>