1

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

我发现了很多技巧,使用 LOG4J。但是JDK没有找到解决方案:---((

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

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

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

有人有什么想法吗?

4

4 回答 4

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的详细信息

于 2015-07-10T03:19:26.673 回答
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 日志将 TRACE 映射到 JDK 的 FINER 级别。所以你想=FINER在你的配置中使用(或=FINEST

于 2013-06-03T17:14:49.027 回答
0

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

我最终得到了以下配置(原始问题):

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

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

于 2015-09-15T08:39:55.703 回答
0

使用wireshark你可以很容易地看到完整的mysql语句

于 2016-07-21T11:02:19.953 回答