使用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信息