一、log4jdbc的简单介绍
使用log4jdbc在不改变原有代码的情况下,就可以收集执行的SQL文和JDBC执行情况。
平时开发使用的ibatis,hibernate,spring jdbc的sql日志信息,有一点个缺点是占位符与参数是分开打印的,如果想要拷贝sql至PLSQL Developer客户端直接执行,需要自己拼凑sql。而log4jdbc是在jdbc层的一个日志框架,可以将占位符与参数全部合并在一起显示,方便直接拷贝sql在PLSQL Developer等客户端直接执行,加快调试速度。
二、log4jdbc的使用
在pom.xml中添加log4jdbc的引用
<dependency>
<groupId>com.googlecode.log4jdbc</groupId>
<artifactId>log4jdbc</artifactId>
<version>1.2</version>
</dependency>
新建log4j.properties的配置文件,内容如下所示:
log4j.logger.jdbc.sqlonly=DEBUG,console log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %m%n%n log4j.logger.jdbc.sqltiming=INFO,console log4j.logger.jdbc.connection=INFO,console
修改mysqljdbc.properties配置文件的url和driverClassName如下
jdbc.driver=net.sf.log4jdbc.DriverSpy
#数据库地址
jdbc.url=jdbc:log4jdbc:mysql://localhost:3306/tmall_ssm?useUnicode=true&characterEncoding=utf8
#用户名
jdbc.username=root
#密码
jdbc.password=admin
#最大连接数
jdbc.maxPoolSize=30
#最小连接数
jdbc.minPoolSize=10
#关闭连接后不自动commit
jdbc.autoCommitOnClose=false
#获取连接超时时间
jdbc.checkoutTimeout=10000
#当获取连接失败重试次数
jdbc.acquireRetryAttempts=2
经过这样的配置之后,就可以使用log4jdbc记录应用系统执行的SQL信息了。
重新启动SSM程序进行测试,可以看到,log4jdbc记录出了SQL的执行的时间,执行时的参数以及执行耗时。这对于我们在开发中查找SQL错误是非常有帮助的。
本文大部分内容参考自
孤傲苍狼的博文
使用log4jdbc记录SQL信息