【问题标题】:How to configure Hibernate logging?如何配置 Hibernate 日志记录?
【发布时间】:2011-10-18 13:11:04
【问题描述】:

我正在开发的示例应用程序不断将所有 Hibernate 查询写入 Tomcat 控制台。我的意思是,如果你在 Windows 上启动 Tomcat,你会打开一个小程序类型的窗口。 Hibernate 不断编写所有数据访问代码,例如“Hibernate: select table10_.col1 as COL10_, table10_.col2 as COL20_,...”我想知道是否可以为 Hibernate 设置任何配置来将这些查询写入某种日志文件?可能到tomcat/logs下的localhost-log?

【问题讨论】:

  • 我发誓这是我这么多天来第三次看到这个问题了。我们可以移动它,并附上常见问题解答的相应答案吗?

标签: hibernate tomcat logging


【解决方案1】:

那不是记录,它是 Hibernate 的“show_sql”。查找名为“hibernate.show_sql”的属性被设置为“true”。将其更改为 false 或完全删除它以摆脱那些。然后查看 Hibernate 参考中的 the Configuration chapter,了解如何在 Hibernate 中设置 SQL 日志记录。

【讨论】:

  • show_sql 不是旧配置设置吗?我相信它主要用于最初用 Hibernate pre 3.3 版本编写的项目中。
  • 我当然不会使用 show_sql。不幸的是,它仍然在参考指南中的the tutorial 中使用。
  • @Ryan.. 感谢您的回复.. 我在 sessionfactory bean 定义中将 show_sql 设置为 false,它对我有用.. 仍然需要处理 sql 日志记录。再次感谢
【解决方案2】:

@Ryan-Stewart 是对的,但它可以是通过 Java JDBC 驱动程序,可以记录 SQL 和/或 JDBC calls 用于其他 JDBC 驱动程序。

使用 hibernate 的日志记录,您的日志记录类似于:

 select bs0_.A_REF as A2_7_0_ from B bs0_ where  bs0_.other = 0 and bs0_.A_REF=?  
 TRACE 2011-08-  03 00:30:45,317 binding '123' to parameter: 1

注意“?”而不是真正的参数值。

通过 JDBC 驱动程序,您的日志记录类似于:

select bs0_.A_REF as A2_7_0_ from B bs0_ where  bs0_.other = 0 and bs0_.A_REF=123  

所有绑定参数都已解析。

log4jdbc 是其中一种通过 JDBC 驱动程序。

【讨论】:

    猜你喜欢
    • 2017-06-06
    • 2010-09-30
    • 2012-08-29
    • 1970-01-01
    • 2012-07-23
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多