Hibernate 4.2:如何使用JDK日志API跟踪sql值

时间:2013-06-03 13:59:24

标签: hibernate logging

我们当前的项目没有log4j jar,我们只使用JDK logging API。 现在我需要查看HQL语句的值,这些语句当前以“?”,“?”显示。

我使用LOG4J找到了lot of tips。但是没有找到JDK的解决方案:---((

我在logging.properties中设置了以下内容:

  1. org.hibernate.level=TRACE
  2. org.hibernate.SQL.level = TRACE
  3. .level=TRACE
  4. 但它没有效果。如果我设置了INFO级别,那么我发送给测试的所有WARN将不可见。因此,logging.properties绑定到Java类路径

    有人有什么想法吗?

4 个答案:

答案 0 :(得分:1)

JBoss Logging将使用密钥org.jboss.logging.provider查找系统设置。您需要做的是使用值" jdk"设置系统属性,以便Hibernate将使用Java日志记录框架进行日志记录

System.setProperty("org.jboss.logging.provider", "jdk"); 

要在sql中记录绑定参数,您需要在logging.properties

中再添加一条语句
org.hibernate.type.descriptor.sql.level=FINEST

您可以参考Hibernate日志指南中的详细信息 http://docs.jboss.org/hibernate/orm/4.3/topical/html/logging/Logging.html

答案 1 :(得分:0)

Java JDK日志记录的权威资源是Java日志记录指南:http://docs.oracle.com/javase/7/docs/api/java/util/logging/package-summary.html

但一般来说,JDK日志记录没有定义TRACE级别:http://docs.oracle.com/javase/6/docs/api/java/util/logging/Level.html

Hibernate使用JBoss Logging进行日志记录。 JBoss Logging定义了一个TRACE级别(就像JDK以外的大多数日志库一样);当桥接到JDK日志记录时,JBoss Logging将TRACE映射到JDK的FINER级别。因此,您需要在配置中使用=FINER(或=FINEST

答案 2 :(得分:0)

我遇到了同样的问题,并且不想使用其他日志工具。

我最终得到了以下配置(original question):

handlers=java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level=FINE
org.hibernate.level=WARN
org.hibernate.SQL.level=FINE

也许不是最好的一个,因为它有时会记录很多东西,但它正在发挥作用。

答案 3 :(得分:0)

使用wireshark,您可以轻松查看完整的mysql句子