Hibernate 使用log4j,sl4j 记录日志并记录sql 语句参数的值
By:Roy.LiuLast updated:2014-01-20
在Hibernate内部使用slf4j 来处理日志,所以在配置Hibernate日志的时候,slf4j 是必不可少的jar包, 严格说了slf4j 只是一个日志接口,可以由很多其它三方的 jar 来实现,比如用log4j实现等, 对于日志的配置应该都知道怎么配了,但是经常在日志中看到类似如下的语句:
insert into stock (STOCK_CODE, STOCK_NAME) values (?, ?) , 里面全部是参数化的“?” 号, 然后这些值并没有打印出来,对于查看日志来说,还是有些不方便,怎么在日志中打印出这些参数值呢,是可以通过log4j 的配置做到的。
[B]配置Hibernate log4j 日志文件 [/b]
通常log4j 配置文件放在classpath目录下, 也就是通常的src 目录下. 一个常用的hibernate log4j的配置如下:
上面的配置日志会输出到C盘下,文件名为yihaomen.log, 同时在eclipse 的控制台也会输出.
Hiberante 显示 sql 参数的 配置
log4j.logger.org.hibernate.type = ALL , 这是重点,这就是hibernate 提供显示参数的配置。
配置之后,运行测试程序,会显示如下的结果:
这样用log4j 就完全能看到hibernate生成的SQL语句和参数了, 对于查找问题来说是很方便的事情。另外 log4j.logger.org.hibernate 这个配置对于调试Hibernate 程序查看信息也是很重要的,当然如果你不需要这些信息,可以注释掉.
insert into stock (STOCK_CODE, STOCK_NAME) values (?, ?) , 里面全部是参数化的“?” 号, 然后这些值并没有打印出来,对于查看日志来说,还是有些不方便,怎么在日志中打印出这些参数值呢,是可以通过log4j 的配置做到的。
[B]配置Hibernate log4j 日志文件 [/b]
通常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 程序查看信息也是很重要的,当然如果你不需要这些信息,可以注释掉.
From:一号门
COMMENTS