我们当前的项目没有log4j jar,我们只使用JDK logging API。 现在我需要查看HQL语句的值,这些语句当前以“?”,“?”显示。
我使用LOG4J找到了lot of tips。但是没有找到JDK的解决方案:---((
我在logging.properties
中设置了以下内容:
org.hibernate.level=TRACE
org.hibernate.SQL.level = TRACE
.level=TRACE
但它没有效果。如果我设置了INFO级别,那么我发送给测试的所有WARN将不可见。因此,logging.properties
绑定到Java类路径
有人有什么想法吗?
答案 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句子