`
elfasd
  • 浏览: 98248 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

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

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

  <!-- 是否显示sql   -->
  <property name="show_sql">true</property>
  <!-- 是否格式化sql -->
  <property name="format_sql">true</property>
  <!-- 是否使用注释  -->
  <property name="use_sql_comments">true</property>

肯定遇到过这种情况:

 

    /* insert cn.javasd.hibernate.ZlpUser
        */ insert
        into
            ZlpUser
            (name, password, createTime, expireTime, id)
        values
            (?, ?, ?, ?, ?)

 

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

 

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

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

### direct log messages to stdout ###  
		log4j.appender.stdout=org.apache.log4j.ConsoleAppender  
		log4j.appender.stdout.Target=System.out  
		log4j.appender.stdout.layout=org.apache.log4j.PatternLayout  
		log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n  
		  
		log4j.logger.org.hibernate=debug
		log4j.logger.org.hibernate.hql.ast.AST=debug 
		
		#下面的两条配置非常重要,设置为trace后,将可以看到打印出sql中 ? 占位符的实际内容
		#this is the most important config for showing parames like ?
		log4j.logger.org.hibernate.SQL=trace 
		log4j.logger.org.hibernate.type=trace
		#above two configs 
		log4j.logger.org.hibernate.tool.hbm2ddl=debug 
		log4j.logger.org.hibernate.hql=debug 
		log4j.logger.org.hibernate.cache=debug


		log4j.logger.org.hibernate.transaction=debug 
		log4j.logger.org.hibernate.jdbc=debug 
		log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace

		  
		log4j.rootLogger=warn, stdout  
		log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=TRACE

 

打印后的结果如下:

 

Hibernate:
    /* insert cn.javasd.hibernate.ZlpUser
        */ insert
        into
            ZlpUser
            (name, password, createTime, expireTime, id)
        values
            (?, ?, ?, ?, ?)
16:09:06,280 TRACE StringType:151 - binding '张路平2212' to parameter: 1
  16:09:06,284 TRACE StringType:151 - binding '3839729' to parameter: 2
  16:09:06,287 TRACE TimestampType:151 - binding '2013-01-16 16:09:06' to parameter: 3
  16:09:06,294 TRACE TimestampType:151 - binding '2013-01-16 16:09:06' to parameter: 4
  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做了代理

 

 

 

 

2
2
分享到:
评论
2 楼 elfasd 2013-01-17  
好像是有一个插件,显示格式上更人性化
1 楼 devilyard 2013-01-17  
这个还是比较有用的,调试的时候不能看到参数还是会有很多不便

相关推荐

    springmvc5+hibernate5+junit4+log4j2整合实例

    springmvc5+hibernate5+junit4+log4j2整合实例 包含 代码实例 数据库建表sql 运行环境 myeclipes2015 jdk 1.8 tomcat 8.0

    hibernate按自己要求输出自己规则的完整SQL

    在企业做项目时如果用了hibernate会有个头疼问题,就是如何让输出sql方便查看,因为出了问题时,要去查错时sql日志会给我们很大帮助,但hibernate通过配p6spy输出很乱,且只能输了到spy.log中,很不好查看,这里是我...

    ssh ,log4j实例

    SSH框架整合实战项目,log4j完整的配置文件(log4j.perproties,log4j.xml),日志可输出到控制台、本地文件、数据库,提供多种配置方法,项目可直接运行,SQL语句在项目中。该项目对学习spring,struts2,hibernate,log...

    hibernate核心包

    Hibernate3.jar hibernate核心包 antlr-2.7.6.jar 一个语言转换工具(Hibernate利用它实现 HQL 到 SQL 的转换模板相关操作需要包) ...slf4j-api-1.5.8.jar和slf4j-log4j12-1.5.0.jar hibernate使用的一个日志系统

    P6SPY JDBC拦截打印sql语句 非常好的调试工具

    P6spy是一个JDBC Driver的包装工具,p6spy通过对JDBC Driver的封装以达到对SQL语句的监听和分析,以达到各种目的。 p6spy的安装步骤: 1. 下载p6spy的安装包 2. 把p6spy的jar包放到Classpath中,如果是WEB App...

    springmvc+hibernate 日志管理工具

    功能包括:功能日志记录(访问、参数、异常、返回结果集)、数据日志记录、日志查询... 日志记录:以JSON格式输出日志,通过log4j配置日志文件输出方式。 日志查询:提供servlet加载日志文件,前台JSON处理查询对照。

    hibernate5.0.2Set.rar

    hibernate,SQLserver和MySQL的JDBC, log4j和log4j的配置文件(已经写好的)

    hibernate所需的13个(1个mysql驱动包+3个日志包+9个hibernate-required包)jar包

    初学hibernate所需的13个(1个mysql驱动包+3个日志包+9个hibernate-required包)jar包

    slf4j-1.7.5与slf4j-1.5.2

    里面含有1.5.2版本和1.7.5版本的,如果你需要打印hibernate或则ibatis的sql语句,需要下面四个jar包哟,我放在里面有个文件夹的。 然后你还需要配置一个log4j.properties文件

    hibernate.properties

    ## format SQL in log and console hibernate.format_sql true ## add comments to the generated SQL #hibernate.use_sql_comments true ## generate statistics #hibernate.generate_statistics true ## ...

    ssh(structs,spring,hibernate)框架中的上传下载

    数据表Blob字段在Hibernate持久化映射文件中的type为org.springframework.orm.hibernate3.support.BlobByteArrayType,即Spring所提供的用户自定义的类型,而非java.sql.Blob。 3在Spring中使用org.springframework...

    关于在Hibernate中对于Clob,Blob字段的处理方法

    oracle的jdbc驱动程序,用这个版本的操作Clob,blob类型的数据很方便。 博文链接:https://zhenjw.iteye.com/blog/173419

    Tomcat\Tomcat优化和监控

    log4j.propertis文件中是否设置成ERROR级别 2、把tomcat安装为windows服务的时候,要把jvm内存设置成1G,同时一定要把这些参数加进去。 -XX:PermSize=64M -XX:MaxPermSize=128m -XX:ReservedCodeCacheSize=48m -...

    cxf(jax-ws)+spring+hibernate整合包

    20020414.jar,slf4j-api-1.5.8.jar,slf4j-log4j12-1.5.8.jar,spring-aop-3.0.7.RELEASE.jar,spring-asm-3.0.7.RELEASE.jar,spring-beans-3.0.7.RELEASE.jar,spring-context-3.0.7.RELEASE.jar,spring-core-3.0.7....

    Tomcat优化和监控.docx

    log4j.propertis文件中是否设置成ERROR级别 2、把tomcat安装为windows服务的时候,要把jvm内存设置成1G,同时一定要把这些参数加进去。 -XX:PermSize=64M -XX:MaxPermSize=128m -XX:ReservedCodeCacheSize=48m -...

    SHH整合(mysql,struts2 2.2+spring2.5+hibernate3.0,log,jquery,标签等)DEMO

    1、SHH整合 详细清晰的标准配置,主流的应用配置,struts2.2+spring2.5+hibernate3.0 2、结合MYSQL轻量级数据库,有写好的库表sql 3、整合日志管理配置,及Spring代理日志管理的配置及应用 4、应用WEB前段主流技术,...

    web项目常用jar包及说明.zip

    2.commons-logging-1.1.1.jar(ASF出品的日志包,struts2 2、spring、hibernate框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录) 3.common-annotations.jar(支持注解的包) 4.aspectjrt.jar(支持AOP的包) 5....

    各类Java 所需jar 包 (3)

    各类Java 所需jar 包 。 包含dbcp dom4j hibernate hibernate-annotation jspsmartupload jstl log4j mybatis mysql oracle poi spring sqlserver struts2

    jar包 (2)

    各类Java 所需jar 包 。 包含dbcp dom4j hibernate hibernate-annotation jspsmartupload jstl log4j mybatis mysql oracle poi spring sqlserver struts2

Global site tag (gtag.js) - Google Analytics