Hibernate 使用log4j,sl4j 记录日志并记录sql 语句参数的值

在Hibernate内部使用slf4j 来处理日志,所以在配置Hibernate日志的时候,slf4j 是必不可少的jar包, 严格说了slf4j 只是一个日志接口,可以由很多其它三方的 jar 来实现,比如用log4j实现等, 对于日志的配置应该都知道怎么配了,但是经常在日志中看到类似如下的语句:
insert into stock (STOCK_CODE, STOCK_NAME) values (?, ?) , 里面全部是参数化的“?” 号, 然后这些值并没有打印出来,对于查看日志来说,还是有些不方便,怎么在日志中打印出这些参数值呢,是可以通过log4j 的配置做到的。

配置Hibernate log4j 日志文件
通常log4j 配置文件放在classpath目录下, 也就是通常的src 目录下. 一个常用的hibernate log4j的配置如下:
程序代码 程序代码

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\yihaomen.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

# 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

# Root logger option
log4j.rootLogger=INFO, file, stdout

# Log everything. Good for troubleshooting
log4j.logger.org.hibernate=INFO

# Log all JDBC parameters
log4j.logger.org.hibernate.type=ALL


上面的配置日志会输出到C盘下,文件名为yihaomen.log, 同时在eclipse 的控制台也会输出.

Hiberante 显示 sql 参数的 配置
log4j.logger.org.hibernate.type = ALL , 这是重点,这就是hibernate 提供显示参数的配置。
配置之后,运行测试程序,会显示如下的结果:

程序代码 程序代码

Hibernate: insert into stock (STOCK_CODE, STOCK_NAME) values (?, ?)
21:13:25,390 TRACE BasicBinder:81 - binding parameter [1] as [VARCHAR] - [4715444]
21:13:25,390 TRACE BasicBinder:81 - binding parameter [2] as [VARCHAR] - [GENM]


这样用log4j 就完全能看到hibernate生成的SQL语句和参数了, 对于查找问题来说是很方便的事情。另外 log4j.logger.org.hibernate 这个配置对于调试Hibernate 程序查看信息也是很重要的,当然如果你不需要这些信息,可以注释掉.

除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: hibernate log4j
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.