vlambda博客
学习文章列表

log4jdbc记录完整的SQL信息

阅读文本大概需要3分钟。

0x01:log4jdbc的简单介绍

  使用log4jdbc在不改变原有代码的情况下,就可以日志文件中输出的SQL语句和JDBC执行耗时情况。

      平时开发使用的mybatis、hibernate、spring jdbc的sql日志信息,有一点个缺点是占位符与参数是分开打印的,如果想要拷贝SQL至PLSQL Developer客户端直接执行,需要自己手动拼凑一下SQL。而log4jdbc是在jdbc层的一个日志框架,可以将占位符与参数全部合并在一起显示,方便直接拷贝SQL在PLSQL Developer等客户端直接执行,加快调试速度。


0x02: log4jdbc的使用

  下载log4jdbc的jar包log4jdbc-1.2.jar以及依赖的相关Jar包log4j-1.2.17.jar、slf4j-api-1.6.0.jar、slf4j-log4j12-1.7.7.jar

在日志配置文件中定义相关logger对象的输出级别和输出器

在log4jdbc中定义了以下五个日志对象:

  • jdbc.sqlonly     : 记录系统执行过的sql语句

  • jdbc.sqltiming  : 记录sql执行的时间,可以分析耗时的sql语句

  • jdbc.audit        : 记录除了ResultSet外的所有JDBC调用情况。一般不需要

  • jdbc.resultset   : 记录返回结果集信息

  • jdbc.connection: 记录数据库连接和释放信息,可记录当前的数据库连接数,便于诊断连接是否释放


0x03: 配置log4j的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


0x04: 修改jdbc.properties配置文件的url和driverClassName

jdbc.url=jdbc:log4jdbc:mysql://localhost:3306/xdptest
jdbc.driverClassName=net.sf.log4jdbc.DriverSpy
jdbc.username=root
jdbc.password=root
jdbc.filters=stat
jdbc.maxActive=200
jdbc.initialSize=20
jdbc.maxWait=60000
jdbc.minIdle=10
jdbc.timeBetweenEvictionRunsMillis=60000
jdbc.minEvictableIdleTimeMillis=300000
jdbc.validationQuery=SELECT 'x'
jdbc.testWhileIdle=true
jdbc.testOnBorrow=false
jdbc.testOnReturn=false
jdbc.removeAbandoned=false
jdbc.removeAbandonedTimeout=1800
jdbc.logAbandoned=true

主要是

  • com.mysql.jdbc.Driver 换成 net.sf.log4jdbc.DriverSpy

  • jdbc:mysql:// 换成  jdbc:log4jdbc:mysql://





往期精彩



01 

02 

03 

04 

05 

关注我每天进步一点点

你点的在看,我都当成了喜欢