利用log4j显示hibernate打印sql中的参数

控制台打印Hibernate的SQL语句显示绑定参数值 问题? 使用Hibernate提供的show_sql内置属性true只能输出类似于下面的SQL语句: Hibernate:    insert into user(name,password) values (?, ?)  这样不利于程序的调试,怎么可以显示具体参数的值? 解决方法: 一、使用第三方jar包p6spy: 下面介绍一下p6spy的使用步骤: 1 h 阅读详情

利用log4j显示hibernate打印sql中的参数

大家都知道在 hibernate.cfg.xml 配置文件中添加以下三条配置,就可以在控制台显示执行的sql:

Xml代码  收藏代码
  1. <!-- 是否显示sql   -->  
  2. <property name="show_sql">true</property>  
  3. <!-- 是否格式化sql -->  
  4. <property name="format_sql">true</property>  
  5. <!-- 是否使用注释  -->  
  6. <property name="use_sql_comments">true</property>  

 

肯定遇到过这种情况:

 

   

Sql代码  收藏代码
  1. /* insert cn.javasd.hibernate.ZlpUser  
  2.        */ insert   
  3.        into  
  4.            ZlpUser  
  5.            (name, password, createTime, expireTime, id)   
  6.        values  
  7.            (?, ?, ?, ?, ?)  

  

?的地方的值并不知道,当然可以跟踪程序断点获得,但是为了方便监控,可以使用log4j的配置来给这些占位符进行参数绑定(bind)

 

具体配置如下(单在hibernate环境下,未整合spring):

文件名:log4j.properties (根目录下)

 

Xml代码  收藏代码
  1. ### direct log messages to stdout ###    
  2.         log4j.appender.stdout=org.apache.log4j.ConsoleAppender    
  3.         log4j.appender.stdout.Target=System.out    
  4.         log4j.appender.stdout.layout=org.apache.log4j.PatternLayout    
  5.         log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n    
  6.             
  7.         log4j.logger.org.hibernate=debug  
  8.         log4j.logger.org.hibernate.hql.ast.AST=debug   
  9.           
  10.         #下面的两条配置非常重要,设置为trace后,将可以看到打印出sql中 ? 占位符的实际内容  
  11.         #this is the most important config for showing parames like ?  
  12.         log4j.logger.org.hibernate.SQL=trace   
  13.         log4j.logger.org.hibernate.type=trace  
  14.         #above two configs   
  15.         log4j.logger.org.hibernate.tool.hbm2ddl=debug   
  16.         log4j.logger.org.hibernate.hql=debug   
  17.         log4j.logger.org.hibernate.cache=debug  
  18.   
  19.   
  20.         log4j.logger.org.hibernate.transaction=debug   
  21.         log4j.logger.org.hibernate.jdbc=debug   
  22.         log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace  
  23.   
  24.             
  25.         log4j.rootLogger=warn, stdout    
  26.         log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=TRACE  

 

Sql代码  收藏代码
  1. 打印后的结果如下:  
  2.   
  3.    
  4.   
  5. Hibernate:   
  6.     /* insert cn.javasd.hibernate.ZlpUser  
  7.         */ insert   
  8.         into  
  9.             ZlpUser  
  10.             (name, password, createTime, expireTime, id)   
  11.         values  
  12.             (?, ?, ?, ?, ?)  
  13. 16:09:06,280 TRACE StringType:151 - binding '张路平2212' to parameter: 1  
  14.   16:09:06,284 TRACE StringType:151 - binding '3839729' to parameter: 2  
  15.   16:09:06,287 TRACE TimestampType:151 - binding '2013-01-16 16:09:06' to parameter: 3  
  16.   16:09:06,294 TRACE TimestampType:151 - binding '2013-01-16 16:09:06' to parameter: 4  
  17.   16:09:06,295 TRACE StringType:151 - binding '402881e13c426784013c426785cf0001' to parameter: 5  

 

当然,输出的结果中有很多对于自己不必要的信息,可以通过调整log4j的内容来控制输出,那几个debug的信息都可以注掉,其实 log4j.logger.org.hibernate.SQL=trace  这条也可以注掉,不然会打印出两遍sql

 

最后要说一下配置log4j需要注意的一些地方,特别是引入jar包的时候:

1、因为Hibernate 3用的是slf4j,因此要想使用log4j配置文件来全面配置Hibernate日志,
     还需要添加slf4j-log4j12-XX.jar。注意,如果添加了此jar包,需要移除slf4j-nop-XX.jar,
     否则控制台会有“Multiple bindings were found on the class path ”错误。

2、需要添加log4j-x.x.xx.jar

3、添加slf4j-api-x.x.x.jar

 

最后,附件是一个使用了这个配置的小例子

 

 也可以使用 p6spy 来配置,有兴趣的可以试一下,其实就是对jdbc做了代理

从AD到HFSS:Gerber文件驱动的PCB三维电磁仿真全流程解析 本文详细解析了从AD到HFSS的Gerber文件驱动的PCB三维电磁仿真全流程,重点介绍了Gerber文件作为桥梁的重要性、AD端Gerber文件导出实战指南、HFSS 3D Layout导入技巧及高级问题排查方法。通过实际案例和技巧分享,帮助工程师高效完成PCB电磁仿真,提升设计验证效率。 阅读详情

相关推荐

UE5 VlcMedia 插件编译与流媒体播放实战

本文详细介绍了在虚幻引擎5中编译并集成VlcMedia插件以解决流媒体播放难题的实战指南。针对UE5不再默认支持Win32 API导致的编译错误,文章提供了核心的构建配置文件修改步骤,并指导如何启用插件、创建VLC媒体播放器,最终成功播放如.m3u8等格式的网络直播流或点播视频。

weixin_29013129的博客 338

Hibernate打印SQL及附加参数(log4j配置)

在Hibernate的配置文件hibernate.cfg.xml中有3个设置项跟显示SQL语句相关,他们的值都是boolean值: 1、show_sql:是否显示SQL语句 2、format_sql: 是否格式化输出字符串,增强SQL的可读性 3、use_sql_comments:是否显示注释,用于指示出是什么操作产生了这个SQL语句。 如果设置了show_sql=true

wolongsuxing的专栏 6457

SpringBoot项目启动后ShardingSphere5.0首次SQL查询慢?这个预热技巧帮你搞定

本文针对SpringBoot项目集成ShardingSphere 5.0后首次SQL查询慢的问题,深入剖析了其根源在于SQL解析引擎的懒加载与缓存初始化。文章提供了三种有效的预热技巧,包括精准的SQL解析引擎预热、简单查询触发全链路预热以及可配置的生产级方案,帮助开发者将初始化成本提前至应用启动阶段,从而消除性能毛刺,提升用户体验与系统稳定性。

chair的专栏 1062

Hibernate 使用 log4j

1、笔记 主要增加: D:\Java\SSH\Tools\log4j-1.2.17.jar D:\Java\SSH\Tools\slf4j-log4j12-1.7.4.jar 取得properties文件: D:\Java\SSH\hibernate-4.1.10\project\etc 要保证hibernate包中没有slf4j的jar 自己屏蔽的内容有: #log4j.logger

向北西行的专栏 1026

一维光子晶体态密度计算与应用解析

态密度(DOS)是凝聚态物理和光子学中的核心概念,描述了量子态在能量空间的分布规律。基于麦克斯韦方程组的周期性介电结构分析表明,一维光子晶体通过布拉格散射形成光子带隙,其态密度曲线呈现典型的范霍夫奇点和禁带特征。这种特性使光子晶体在光学工程中具有重要价值,特别是在滤波器设计和传感器开发领域。通过转移矩阵法等数值计算手段,可以精确预测带隙位置和宽度,其中折射率对比度与周期数是关键设计参数。实际应用中,1550nm通信波段滤波器常采用Si/SiO2交替结构,而引入缺陷层则能产生高Q值缺陷模。计算优化时需注意数值

weixin_36487018的博客 193

机器人关节电机发热难题:从工程化角度拆解热管理解决方案(下)

摘要:本文系统分析了机器人关节电机与驱动系统的热管理方案,重点解决局部热点问题。针对不同功率场景提出了热管/均热板散热(适用于中小功率)和液冷散热(适用于高功率)的具体实施方案,详细比较了结构参数、材料选择、安装工艺和散热效果。特别强调了电机-驱动协同热管理的重要性,提出"工况联动+热路径共享"的核心理念,包括一体化散热结构设计和动态控制策略。最后介绍了热仿真与测试验证方法,确保方案的有效落地。通过系统级热管理,可显著降低温升(热点区域降温30-60℃),同时优化体积和能耗。

bother3000的博客 3326

log4j.properties中的这句话“log4j.logger.org.hibernate.SQL=DEBUG ”该怎么写在log4j.xml里面呢?...

http://www.cnblogs.com/gredswsh/p/log4j_xml_properties.html 请问:log4j.properties中的这句话“log4j.logger.org.hibernate.SQL=DEBUG”该怎么写在log4j.xml里面呢? Hibernate 默认是把 SQL 语句是输出到控制台,而控制台中的内容查阅起来并不方便,...

weixin_30535913的博客 909

【零基础入门unity游戏开发——unity通用篇12】导入导出unity资源包、设置编程工具、创建脚本(组件)规则、MonoBehaviour基类介绍、脚本模板(基于unity6开发介绍)

导入导出unity资源包、设置编程工具、创建脚本(组件)规则、MonoBehaviour基类介绍、脚本模板(基于unity6开发介绍)

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 758

Log4j相对路径以及打印Hibernate的SQL和HQL记录

今天研究了下Log4j,小有收获,现在分享下经验。 首先是Log4j日志记录的相对路径问题,今天研究了下发现有个很简单的办法实现相对路径。网上有很多人发帖询问log4j日志记录的相对路径问题,也有人提供了很多方法,最常见的三个方法是: 法一、 想办法用相对路径代替绝对路径,log4j的FileAppender本身就有这样的机制,如:log4j.appender.logfile.File=${W

星星_月亮的光芒 742

Cadence PCB仿真 使用Allegro PCB SI为BRD文件创建通用型IBIS模型的方法图文教程

本文简单介绍使用Allegro PCB SI软件为BRD PCB设计文件中的元器件创建IBIS模型的方法。

fydar的博客 2168

STM32实战开发(110):基于STM32的智能地震监测系统开发

地震监测系统是自然灾害预警体系中至关重要的一部分。随着地震灾害的频发和对自然灾害预测精度要求的提高,智能地震监测系统逐渐成为研究的热点。STM32作为一款高性能的微控制器,凭借其强大的处理能力和丰富的外设接口,在地震监测领域中得到了广泛应用。本篇文章将详细介绍如何使用STM32实现一个智能地震监测系统的开发过程,涵盖硬件设计、软件编程、系统实现及相关代码。通过集成加速度传感器、地震数据采集、实时数据处理和无线数据传输功能,我们可以设计一个高效、稳定的智能地震监测系统。

2201_76125393的博客 710

利用log4j显示hibernate打印sql中的实际参数

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33932129的博客 278

Android 10.0 SystemUI 屏蔽状态栏消息推送弹出的悬浮通知

在状态栏中,有一些通知类似 消息推送 弹出的 悬浮通知,弹出30秒之后会消失掉 要想屏蔽掉这些通知,首选知道这些通知是怎么产生的 通知类型 NotificationContentInflater.java 详细的介绍各种通知的类型 frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java /** * The defau

安卓兼职framework和app工程师的博客 1542

Hibernate配置打印sql语句和参数

在Hibernate的配置文件hibernate.cfg.xml中有3个设置项跟显示SQL语句相关,他们的值都是boolean值: 1、show_sql:是否显示SQL语句 2、format_sql: 是否格式化输出字符串,增强SQL的可读性 3、use_sql_comments:是否显示注释,用于指示出是什么操作产生了这个SQL语句。 如果设置了show_sql=true的话默认只打印SQL...

u012925172的博客 3205

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

java 日志打印sql语句_利用log4j打印sql的log日志

默认情况下,使用ibatis是不打印ibatis相关的log的,因为内部的sql执行都是内部调用,在server的控制台是不 会 打印log的。在log4j的配置文件log4j.properties里加上以下几句话就可以了:log4j.rootLogger=DEBUG,stdout,logfilelog4j.logger.com.bill99.base=INFOlog4j.logger.com.b...

weixin_32642653的博客 4231

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【转】hibernate打印SQL及参数

在Hibernate的配置文件hibernate.cfg.xml中有3个设置项跟显示SQL语句相关,他们的值都是boolean值:1、show_sql:是否显示SQL语句2、format_sql: 是否格式化输出字符串,增强SQL的可读性3、use_sql_comments:是否显示注释,用于指示出是什么操作产生了这个SQL语句。 如果设置了show_sql=true的话默认只打...

baitingdan8511的博客 345

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

How to display hibernate sql parameter values – Log4j

Problem Hibernate has basic logging feature to display the SQL generated statement withshow_sql configuration property. Hibernate: INSERT INTO mkyong.stock_transaction (CHANGE, CLOSE, DATE, OPEN

1149

log4j配置使控制台能打印出hibernate生成sql的参数

在log4j.xml中配置如下 <loggername="org.hibernate.type"><levelvalue="trace"/></logger> 可使控制台打印出sql 的具体参数 转载于:https://blog.51cto.com/wanqiufeng/742513...

weixin_34050005的博客 443

hibernate 不输出sql参数的解决

我的一个项目(spring hibernate cxf)使用slf4j + log4j 来输出日志,按说只要配置上 log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=TRACE 即可实现hibernate中sql参数的输出,可是它死活就是没有输出,后来我仔细查了查,发现原来在classpath中存在着 slf4j-jdk14.j

liuyingming910的专栏 1477
上一篇: oracle10G/11G官方下载地址集合 直接迅雷下载
下一篇: commons-logging 和 log4j 之间的关系
java85140031
博客等级 码龄18年 34粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值