一、log4jdbc的简单介绍

  使用log4jdbc在不改变原有代码的情况下,就可以收集执行的SQL文和JDBC执行情况。

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

二、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,如下图所示:

  

  配置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

  修改dbconfig.properties配置文件的url和driverClassName

 1 url:jdbc:log4jdbc:mysql://localhost:3306/xdptest
 2 driverClassName:net.sf.log4jdbc.DriverSpy
 3 username:root
 4 password:root
 5 filters:stat
 6 maxActive:200
 7 initialSize:20
 8 maxWait:60000
 9 minIdle:10
10 timeBetweenEvictionRunsMillis:60000
11 minEvictableIdleTimeMillis:300000
12 validationQuery:SELECT 'x'
13 testWhileIdle:true
14 testOnBorrow:false
15 testOnReturn:false
16 removeAbandoned:false
17 removeAbandonedTimeout:1800
18 logAbandoned:true

  经过这样的配置之后,就可以使用log4jdbc记录应用系统执行的SQL信息了。

  编写一个测试Servlet进行测试,代码如下:

 1 /**
 2  *
 3  */
 4 package me.gacl.web.controller;
 5
 6 import java.io.IOException;
 7 import java.sql.Connection;
 8 import java.sql.PreparedStatement;
 9 import java.sql.SQLException;
10 import java.util.UUID;
11 import javax.servlet.ServletException;
12 import javax.servlet.http.HttpServlet;
13 import javax.servlet.http.HttpServletRequest;
14 import javax.servlet.http.HttpServletResponse;
15 import me.gacl.util.DataSourceUtil;
16
17 /**
18  * <p>ClassName: TestServlet<p>
19  * <p>Description: <p>
20  * <p>Company:广州利迪网络科技有限公司 <p>
21  * @author xudp
22  * @version 1.0 V
23  * @createTime 2014-11-5 下午01:49:49
24  */
25 public class TestServlet extends HttpServlet {
26
27     public void doGet(HttpServletRequest request, HttpServletResponse response)
28             throws ServletException, IOException {
29         String sql = "INSERT INTO LD_USER(ID,USERNAME,USERCODE,PASSWORD) VALUES(?,?,?,?)";
30         Connection connection = DataSourceUtil.getConnection();
31         PreparedStatement pstmt = null;
32         try {
33             pstmt = connection.prepareStatement(sql);
34             pstmt.setString(1, UUID.randomUUID().toString());
35             pstmt.setString(2, "孤傲苍狼");
36             pstmt.setString(3, "gacl");
37             pstmt.setString(4, "xdp");
38             int executeResult = pstmt.executeUpdate();
39         } catch (SQLException e) {
40             e.printStackTrace();
41         }finally{
42             try {
43                 pstmt.close();
44                 connection.close();
45             } catch (SQLException e) {
46                 e.printStackTrace();
47             }
48         }
49     }
50
51     public void doPost(HttpServletRequest request, HttpServletResponse response)
52             throws ServletException, IOException {
53         this.doGet(request, response);
54     }
55 }

  访问TestServlet,执行doGet方法往数据库中插入数据,log4jdbc记录的SQL信息如下图所示:

  

  可以看到,log4jdbc记录出了SQL的执行的时间,执行时的参数以及执行耗时。这对于我们在开发中查找SQL错误是非常有帮助的。

转载于:https://www.cnblogs.com/xdp-gacl/p/4081848.html

使用log4jdbc记录SQL信息相关推荐

  1. jdbc:log4jdbc_使用Log4jdbc记录JDBC操作

    jdbc:log4jdbc 当我们开发任何应用程序,完成它或结束其任何模块时,我们都会开始优化过程. 大多数应用程序都包含数据库访问权限,如果您使用的是ORM ,则可能会使用hibernate . 优 ...

  2. 使用Log4jdbc记录JDBC操作

    当我们开发任何应用程序,完成它或结束其任何模块时,我们都会开始优化过程. 大多数应用程序都包含数据库访问权限,并且如果您使用的是ORM ,则可能会使用hibernate . 优化休眠持久层,要求准备阅 ...

  3. PHP数据表记录自己信息,PHP对数据表记录的操作

    •       插入数据 •       修改记录 •       删除记录 •       提取记录 •       指定记录提取 •       提取记录个数 插入数据 向数据表中增加记录,可以使 ...

  4. 如何记录SQL Server数据库对象

    介绍 (Introduction) In any good programming reference, you will read that a developer has to document ...

  5. 《OpenACC并行程序设计:性能优化实践指南》一 3.5 在应用程序执行期间记录性能信息...

    3.5 在应用程序执行期间记录性能信息 应用程序将自动使用第一个插装事件启动Score-P性能监视器.使用几个环境变量来配置性能监视器.为了尽量减小运行时间扰动,Score-P默认设置产生一个基于性能 ...

  6. 辅助类——记录错误信息

    记录错误信息 Debug游戏代码可能是非常复杂的,特别是如果您没有得到任何异常,但某些渲染循环却出错.只设置几个断点并不够,尤其是如果游戏在运行一段时间之后遇到错误,Debug并不是正确的选择.您想知 ...

  7. 查询前几条记录SQL在不同数据库中的用法

    13,(1)查询前几条记录SQL在不同数据库中的用法; 1. ORACLE SELECT * FROM TABLE1 WHERE ROWNUM<=N 2. INFORMIX SELECT FIR ...

  8. Serilog 自定义 Enricher 来增加记录的信息

    Serilog 自定义 Enricher 来增加记录的信息 Intro Serilog 是 .net 里面非常不错的记录日志的库,结构化日志记录,而且配置起来很方便,自定义扩展也很方便 Serilog ...

  9. (转)如何在MySql中记录SQL日志(例如Sql Server Profiler)

    SQL server有一个sql profiler可以实时跟踪服务器执行的SQL语句,这在很多时候调试错误非常有用.例如:别人写的复杂代码.生产系统.无调试环境.无原代码... ... 查了一下资料, ...

最新文章

  1. WCF常见问题之端口共享
  2. shell入门基础必备
  3. case when then的用法
  4. python你的人生_人生苦短:运行你的第一个 Python 脚本
  5. Python钉钉报警及Zabbix集成钉钉报警
  6. c 语言从大到小排序算法,10 大经典排序算法(动图演示+ C 语言代码)
  7. 【linux笔记】常用命令(3):文件相关
  8. 一文教会你使用Markdown来制作一份简洁明了的求职简历
  9. 安装Office2010提示缺少MSXML版本6.10.1129.0的解决方法
  10. matlab 换热器仿真,基于MATLAB的换热器温度控制仿真研究.doc
  11. twitter数据爬取
  12. Android音乐播放器读取歌词.lrc文件乱码问题解决方法
  13. idou老师带你认识Istio13:Istio实现基础认证策略
  14. 新手小白安装linux系统
  15. 基于Domoticz智能家居系统(十三)Domoticz-3.8153在Tiny6410开发板上的移植
  16. ESP32-IDF开发笔记 | 01 - ESP-IDF开发环境搭建(2023.04.08更新)
  17. 【洛谷 P5850】 calc加强版(生成函数+NTT)
  18. 云原生docker容器创建实操
  19. uni-app验证码输入框
  20. matplotlib从折线图入门并解决中文乱码

热门文章

  1. Java对C语言Dll的加载 和 回调函数的使用
  2. const、static、const staic理解
  3. 借收购搭桥,风河Workbench软件环境涵盖至测试领域
  4. [转贴]计算机学术期刊排名
  5. python计算平方用map函数_python的map函数的使用方法详解以及使用案例(处理每个元素的自增、自减、平方等)...
  6. 函数的使用——未完待续
  7. 应用程序启动器选项卡以及页面内容的设置
  8. switch分支结构
  9. RenderingHints 参数
  10. windows 技巧篇-清除共享地址访问缓存信息,共享路径临时访问用户切换方法