下面这个log4j的配置可以参考,已经测试过了,具体操作,把三个jar包放到lib下面,然后把property文件放到src目录下,就可以了
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.1</version>
</dependency>
log4j.rootLogger=ERROR, CA
# ConsoleAppender
log4j.appender.CA=org.apache.log4j.ConsoleAppender
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
log4j.appender.CA.layout.ConversionPattern=%d{hh\:mm\:ss,SSS} [%t] %-5p %c %x - %m%n
#下面才是关键
#\u4E3A\u4E86\u663E\u793A\u53C2\u6570
log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
log4j.loggerorg.hibernate.type.descriptor.sql.BasicExtractor=TRACE
#\u67E5\u770B\u67E5\u8BE2\u4E2D\u547D\u540D\u53C2\u6570\u7684\u503C
log4j.logger.org.hibernate.engine.QueryParameters=DEBUG
log4j.logger.org.hibernate.engine.query.HQLQueryPlan=DEBUG
利用log4j显示hibernate打印sql中的参数
大家都知道在 hibernate.cfg.xml 配置文件中添加以下三条配置,就可以在控制台显示执行的sql:
肯定遇到过这种情况:
?的地方的值并不知道,当然可以跟踪程序断点获得,但是为了方便监控,可以使用log4j的配置来给这些占位符进行参数绑定(bind)
具体配置如下(单在hibernate环境下,未整合spring):
文件名:log4j.properties (根目录下)
当然,输出的结果中有很多对于自己不必要的信息,可以通过调整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做了代理