专栏首页JAVA乐园log4jdbc记录完整的SQL信息

log4jdbc记录完整的SQL信息

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://

本文分享自微信公众号 - JAVA乐园(happyhuangjinjin88),作者:java乐园

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java实现文件复制常见方式

    0x01:FileInputStream/FileOutputStream字节流进行文件的复制

    java乐园
  • 11、使用Java High Level REST Client操作elasticsearch

    2、matchQuery(filedName,value)匹配单个字段,匹配字段名为filedName,值为value的文档

    java乐园
  • spring boot项目整合xxl-job

    关于分布式任务调度平台XXL-JOB,作者 许雪里 在其发布的中文教程中已经介绍的很清楚了,这里就不做过多的介绍了。按照文档搭建xxl-job,做此记录。

    java乐园
  • Druid数据库配置详细介绍

    个人博客:https://suveng.github.io/blog/​​​​​​​

    suveng
  • jmeter之JDBC Request各种数据库配置

    jdbc:oracle:thin:user/pass@//host:port/service

    流柯
  • 使用SpringBoot1.4.0的一个坑

    我是攻城师
  • Mybatis配置文件 解析

    Little JAVA
  • 怎样将 MySQL 数据表导入到 Elasticsearch

    本文节选自《Netkiller Database 手札》 MySQL 导入 Elasticsearch 的方法有很多,通常是使用ETL工具,但我觉得太麻烦。于是...

    netkiller old
  • 利用Logstash插件进行Elasticsearch与Mysql的数据

    Logstash与Elasticsearch的安装就不多说了,我之前有两篇文章写的比较详细了ElasticSearch + Logstash + Kibana ...

    大江小浪
  • Springboot 配置多数据源Mybatis的MapUnderScoreToCamelCase不生效

    本文是一篇问题解决经验分享的文章。因为在网上没有搜到相关的介绍文章,而在遇到这个问题的解决过程中,犯过一些想当然的错误,所以记录在此,希望能够对后面遇到此问题的...

    方丈的寺院

扫码关注云+社区

领取腾讯云代金券