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的配置文件
代码语言:javascript复制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
代码语言:javascript复制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://