利用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做了代理
相关推荐
springmvc5+hibernate5+junit4+log4j2整合实例 包含 代码实例 数据库建表sql 运行环境 myeclipes2015 jdk 1.8 tomcat 8.0
在企业做项目时如果用了hibernate会有个头疼问题,就是如何让输出sql方便查看,因为出了问题时,要去查错时sql日志会给我们很大帮助,但hibernate通过配p6spy输出很乱,且只能输了到spy.log中,很不好查看,这里是我...
SSH框架整合实战项目,log4j完整的配置文件(log4j.perproties,log4j.xml),日志可输出到控制台、本地文件、数据库,提供多种配置方法,项目可直接运行,SQL语句在项目中。该项目对学习spring,struts2,hibernate,log...
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 Driver的包装工具,p6spy通过对JDBC Driver的封装以达到对SQL语句的监听和分析,以达到各种目的。 p6spy的安装步骤: 1. 下载p6spy的安装包 2. 把p6spy的jar包放到Classpath中,如果是WEB App...
功能包括:功能日志记录(访问、参数、异常、返回结果集)、数据日志记录、日志查询... 日志记录:以JSON格式输出日志,通过log4j配置日志文件输出方式。 日志查询:提供servlet加载日志文件,前台JSON处理查询对照。
hibernate,SQLserver和MySQL的JDBC, log4j和log4j的配置文件(已经写好的)
初学hibernate所需的13个(1个mysql驱动包+3个日志包+9个hibernate-required包)jar包
里面含有1.5.2版本和1.7.5版本的,如果你需要打印hibernate或则ibatis的sql语句,需要下面四个jar包哟,我放在里面有个文件夹的。 然后你还需要配置一个log4j.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 ## ...
数据表Blob字段在Hibernate持久化映射文件中的type为org.springframework.orm.hibernate3.support.BlobByteArrayType,即Spring所提供的用户自定义的类型,而非java.sql.Blob。 3在Spring中使用org.springframework...
oracle的jdbc驱动程序,用这个版本的操作Clob,blob类型的数据很方便。 博文链接:https://zhenjw.iteye.com/blog/173419
log4j.propertis文件中是否设置成ERROR级别 2、把tomcat安装为windows服务的时候,要把jvm内存设置成1G,同时一定要把这些参数加进去。 -XX:PermSize=64M -XX:MaxPermSize=128m -XX:ReservedCodeCacheSize=48m -...
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....
log4j.propertis文件中是否设置成ERROR级别 2、把tomcat安装为windows服务的时候,要把jvm内存设置成1G,同时一定要把这些参数加进去。 -XX:PermSize=64M -XX:MaxPermSize=128m -XX:ReservedCodeCacheSize=48m -...
1、SHH整合 详细清晰的标准配置,主流的应用配置,struts2.2+spring2.5+hibernate3.0 2、结合MYSQL轻量级数据库,有写好的库表sql 3、整合日志管理配置,及Spring代理日志管理的配置及应用 4、应用WEB前段主流技术,...
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 包 。 包含dbcp dom4j hibernate hibernate-annotation jspsmartupload jstl log4j mybatis mysql oracle poi spring sqlserver struts2
各类Java 所需jar 包 。 包含dbcp dom4j hibernate hibernate-annotation jspsmartupload jstl log4j mybatis mysql oracle poi spring sqlserver struts2