2013-06-03 20 views
1

我们当前的项目没有log4j jar,我们只使用JDK日志API。 现在我需要看到当前显示为“?”,“?”的HQL语句的值。Hibernate 4.2:如何使用JDK日志API跟踪sql值

我发现一个lot of tips,使用LOG4J。但是,没有解决发现JDK:---((

我已在logging.properties如下:

  1. org.hibernate.level=TRACE
  2. org.hibernate.SQL.level = TRACE
  3. .level=TRACE

但它没有任何效果。如果我设置了INFO级别,那么我发送的所有WARN都不可见,因此,logging.properties被绑定到Java类路径

有没有人有任何想法?

回答

0

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

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

Hibernate使用JBoss的日志记录的日志记录。 JBoss Logging定义了一个TRACE级别(与JDK以外的大多数日志库一样);当桥接到JDK日志记录时,JBoss Logging将TRACE映射到JDK的FINER级别。所以你想在你的配置中使用=FINER(或=FINEST

+0

嗨,我都试过了,设置FINEST没有效果: - ((如果我调试的org.jboss.logging.BasicLogger公共布尔isTraceEnabled(。 ){ return isEnabled(Level.TRACE);,返回“false”,因为java.util.logging.Logger。public boolean isLoggable(Level level){if(level。intValue()

+0

您的问题不是Hibernate或JBoss日志记录。您只是没有正确配置JDK日志记录。我从来没有使用JDK日志记录(主要是因为这样的东西)。所以我无法帮助你。我发布了JDK日志记录工具页面。我试过阅读它,但是tbh,它并不是很棒的文档,而且我不知道如何通过属性文件来配置JDK日志记录。 –

+0

@KamenJahr正如史蒂夫说,它看起来像JDK日志记录配置不正确。你能解释你如何配置它吗?默认情况下,JDK日志记录在JRE'lib'目录中查找'logging.properties'文件。不过你可以用'java.util.logging.config.file'系统属性覆盖它。 –

0

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 

你可以从休眠 http://docs.jboss.org/hibernate/orm/4.3/topical/html/logging/Logging.html

0

的记录导游,我也遇到同样的问题,不希望使用其他的日志工具参考的细节。

我结束了以下配置(original question):

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

也许不是最好的,因为它有时记录了很多东西,但它的工作。

0

使用Wireshark,你可以很容易地看到完整的mysql句子