使用log4jdbc记录SQL信息

使用log4jdbc输出sql操作 文章目录前言特性配置依赖配置 application添加 log4jdbc.log4j2.properties添加 logback.xml 前言 log4jdbc 是一个 JDBC 驱动器,能够记录 SQL 日志和 SQL 执行时间等信息。log4jdbc 使用 SLF4J(Simple Logging Facade)作为日志系统。 特性 支持 JDBC3 和 JDBC4 。 支持现有大部分 JDBC 驱动。 易于配置(在大部分情况下,只需要改变驱动类名并在 jdbc url 中加上:log4jdbc,设 阅读详情

使用log4jdbc记录SQL信息

一、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错误是非常有帮助的。

分类:  Java
标签:  java
3
0
« 上一篇: MyEclipse使用总结——MyEclipse中配置WebLogic12c服务器
» 下一篇: 使用JavaScript的数组实现数据结构中的队列与堆栈

posted on 2014-12-29 20:43 孤傲苍狼 阅读(8826) 评论(3) 编辑 收藏

评论

#1楼 2015-11-11 17:49 ihanliu  

  
 

挺好的,但是有个问题,同一个sql打出来了好多条,不知道为啥。

 
   
  

#2楼 2015-11-16 21:19 java码劳  

  
 

你好,有没有关于log4jdbc 的小例子。发我一个好吗?

 
   
  

#3楼 2016-04-19 10:48 凌霄phxism  


  
 

自从上了github和看spring的文档,就很少上博客园了。哈哈,以前经常看你的文章啊。今天想把项目加个sql日志,就找到你这来了,我有一个问题就是,如何把log4jdbc的sql查询语句格式化的漂亮一点呢,像hibernate format_sql

 
 
Java打印漂亮的SQL语句(被格式化的SQL语句) 在项目开发的过程中难免需要打印一下自己拼写的SQL语句,尤其是很长的SQL语句,看起来很不舒服,使用该jar包,打印出来的SQL语句已经被格式化,结构很清晰、简洁,更方便我们调试及分析 立即下载

相关推荐

log4jdbc-remix-0.2.7.jar

java运行依赖jar包

springboot日志,log4j加mybatis配置显示sql

log4j加mybatis配置显示sql信息

焱敦的博客 1439

PCB设计中的规则优先级陷阱:为什么你的过孔总是十字连接?

本文深入解析PCB设计中Altium Designer规则优先级机制,解决过孔总是十字连接而非全连接的问题。通过分析铺铜连接原理和规则匹配逻辑,提供精确控制连接方式的技术实践,包括Custom Query使用和优先级最佳设置,帮助设计师避免常见陷阱,优化高速电路板的电气性能和制造可靠性。

banana的博客 468

log4jdbc实现慢查询sql记录

首先,明确一个概念,这个也是之前一直没怎么搞清楚的:     log4jdbc一共有三个分支,log4jdbc是原版,最近终于加入Maven的主仓库中,fork之一是log4jdbc-remix,后来又再fork了一个log4jdbc-log4j2。 原版Log4jdbc:https://code.google.com/p/log4jdbc/ Slf4jSpyLogDelegator DriverSpy log4jdbc.sqltiming.warn.threshold log4jdbc.sqltimin

每一次对问题的深究,总会收获新的知识和体会 6725

金桔智慧物流之容器(托盘、周转箱等)定位及周转方案原理

金桔智慧物流之容器(托盘、周转箱等)定位及周转方案原理 在物流行业种,托盘是标准化运输的关键的配件,而容器存在丢失、盘点、闲置等管理问题。如何通过信息化的手段提升容器的寿命,提高调配效率,降低闲置是物流容器行业的关键点。 金桔蓝牙网关配合金桔蓝牙资产管理终端可以解决物流行业痛点问题。 容器管理面临的问题: 技术方案 场景描述之库房 场景描述之车辆 场景描述之终端 方案优势 ...

jinjufocus的博客 1180

绝对旋转编码器学习笔记(基本原理,与PC通信等,不定期更新中)

前言 最近开始学习编码器相关内容,目的在于搞清楚编码器的原理,与上位机的联系等问题。笔记资料来源为网络,整理的同时也会有一些总结和感悟。由于研究方向需求,主要研究数字旋转编码器。 1.编码器的定义 编码器(encoder)是将信号(如比特流)或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备。——摘自《百度百科》 通常来说,编码器可以将角度位移、直线位移、转速等物理量转换为电信号。这里的电信号根据不同原理的编码器输出脉冲、二进制数码等不同的类型,下面会提到。 2.编码器的分类 编.

黑化咸鱼的博客 1万+

4、MyBatis + Log4j日志查看Sql参数、结果集元数据、Mapper代理开发、JDK的动态代理与CGLib代理

文章目录MyBatis优化开发日志ResultSet如何转换为Java对象数据库元数据结果集元数据Fastjson基于MyBatis的DAO开发(传统)推荐mapper代理开发JDK动态代理CGLib代理 MyBatis优化开发 日志 MyBatis在执行过程中的信息显示,尤其是SQL参数。 1、增加依赖 <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId

ShawnYue_08的博客 636

雷达信号处理——恒虚警检测(CFAR)

上图展示的是同时在距离维和多普勒维进行恒虚警检测的原理,如果只是在距离维或多普勒维做CFAR,检测单元的左右两侧均有设定好数量的保护单元和参考单元。不同的CFAR检测器适用于不同的场景,CA-CFAR算法适用于均匀环境中的单目标或彼此相距较远的多目标环境,在邻近多目标环境会发生目标的遮蔽效应,在杂波边缘会发生杂波边缘效应。从图中也可以看到,根据阈值的选择不同,有不同的检测器,其中CA-CFAR是取的参考单元的均值,SO-CFAR取的是参考单元的最小值,而GO-CFAR是取的参考单元的最大值。

诚朴勇毅 3万+

Java通过实体类生成sql语句

【Java代码】通过实体类生成sql语句

LawrenceUyi31的博客 3261

YOLOv11 改进 - C2PSA | C2PSA融合Mask Attention掩码注意力,可学习掩码矩阵破解低分辨率特征提取难题 | 2025 预印

本文提出了用于低分辨率图像分割的MaskAttn - UNet框架,并将其核心的掩码注意力机制集成到YOLOv11中。传统U - Net类模型难以捕捉全局关联,Transformer类模型计算量大,而掩码注意力机制通过可学习的掩码,让模型选择性关注重要区域,融合了卷积的局部效率和注意力的全局视野。其工作流程包括特征适配、掩码生成、定向注意力计算和特征融合。我们将掩码注意力机制代码集成到YOLOv11中。

魔改工程师的博客 403

【2025软考高级架构师】论文篇——4、论可靠性系统中软件容错技术的应用

软件容错技术对软件的稳定性起着至关重要的作用,尤其是针对互联网性质的软件并发高存在流量峰值等问题,软件容错技术的应用的重要性就不言而喻了。经过这次我所采用的软件容错技术的方法和措施的实施效果后,使我也看到了自己身上的不足之处,我会在今后的架构设计过程中,不断更新自己的知识,不断完善自己的架构设计领域,设计出更好的软件架构,更好的支撑业务平台的运行,提高公司的竞争力,为公司为社会尽一份绵薄之力。

qq837993702的博客 618

log4jdbc记录完整的SQL信息

阅读文本大概需要3分钟。0x01:log4jdbc的简单介绍  使用log4jdbc在不改变原有代码的情况下,就可以日志文件中输出的SQL语句和JDBC执行耗时情况。 平时开发...

天行健,君子以自强不息;地势坤,君子以厚德载物。 625

SAP 中配置权限职责菜单并分配给用户的核心流程是:用PFCG 创建 / 维护角色(含菜单、事务码、权限)→ 生成权限参数文件 → 通过 SU01/SU10 将角色分配给用户

SAP权限配置核心流程:1)通过PFCG创建角色,配置菜单事务码及权限对象;2)生成权限参数文件;3)用SU01/SU10分配角色给用户。关键步骤包括:在PFCG中维护菜单结构、设置权限字段值、生成Profile,通过用户比较验证权限。批量分配可用SU10,特殊需求可创建复合角色或自定义权限对象。常见问题需检查权限缺失(SU53)、菜单分配及组织级别设置。流程简化为:创建角色→配置权限→分配用户→验证生效。

金牌架构师 1273

SSM中使用log4jdbc记录SQL信息

一、log4jdbc的简单介绍   使用log4jdbc在不改变原有代码的情况下,就可以收集执行的SQL文和JDBC执行情况。   平时开发使用的ibatis,hibernate,spring jdbc的sql日志信息,有一点个缺点是占位符与参数是分开打印的,如果想要拷贝sql至PLSQL Developer客户端直接执行,需要自己拼凑sql。而log4jdbc是在jdbc层的一个日志...

weixin_30425949的博客 171

Ubuntu 系统下安装 OpenClaw(原 Clawdbot)的详细指南

Ubuntu 系统下安装 OpenClaw(原 Clawdbot)的详细指南

Science prince的博客 3535

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

log4jdbc mysql jdbc_SSM中使用log4jdbc记录SQL信息

使用log4jdbc在不改变原有代码的情况下,就可以收集执行的SQL文和JDBC执行情况。平时开发使用的ibatis,hibernate,spring jdbc的sql日志信息,有一点个缺点是占位符与参数是分开打印的,如果想要拷贝sql至PLSQL Developer客户端直接执行,需要自己拼凑sql。而log4jdbc是在jdbc层的一个日志框架,可以将占位符与参数全部合并在一起显示,方便直接拷...

weixin_35554226的博客 232

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

log4jdbc记录SQL信息

一、log4jdbc的简单介绍   使用log4jdbc在不改变原有代码的情况下,就可以收集执行的SQL文和JDBC执行情况。   平时开发使用的ibatis,hibernate,spring jdbc的sql日志信息,有一点个缺点是占位符与参数是分开打印的,如果想要拷贝sql至PLSQL Developer客户端直接执行,需要自己拼凑sql。而log4jdbc是在jdbc层的一个日志

u011191463的专栏 287

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

sql jar包_log4jdbc记录完整的SQL信息

阅读文本大概需要3分钟。0x01:log4jdbc的简单介绍  使用log4jdbc在不改变原有代码的情况下,就可以日志文件中输出的SQL语句和JDBC执行耗时情况。 平时开发使用的mybatis、hibernate、spring jdbc的sql日志信息,有一点个缺点是占位符与参数是分开打印的,如果想要拷贝SQL至PLSQL Developer客户端直接执行,需要自己手动拼凑...

weixin_31842715的博客 222

转】使用log4jdbc记录SQL信息

原博文出自于:  http://www.cnblogs.com/xdp-gacl/p/4081848.html      感谢!       一、log4jdbc的简单介绍   使用log4jdbc在不改变原有代码的情况下,就可以收集执行的SQL文和JDBC执行情况。   平时开发使用的ibatis,hibernate,spring jdbc的sql日志信息,有一点个缺点是占位符与参数...

weixin_33989780的博客 86
上一篇: Ibatis SqlExecutor.executeQuery(ZZ)
下一篇: net.sf.log4jdbc.DriverSpy
javaPie
博客等级 码龄16年 1171粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值