如何为Hibernate的JUnit测试配置commons-logging

时间:2011-03-30 00:31:41

标签: java spring logging junit

我正在尝试使用junit测试和commons日志记录在spring应用程序中调试一些hibernate功能,但我似乎无法获得除默认INFO消息之外的其他任何内容。我也在从Eclipse运行这些junit测试。

我在春季论坛上也没有运气。

我对Hibernate的调试日志输出特别感兴趣(试图弄清楚为什么运行这个测试需要23秒)。

当前输出显示INFO的默认设置:

Mar 29, 2011 4:44:35 PM org.springframework.test.AbstractTransactionalSpringContextTests onSetUp
INFO: Began transaction: transaction manager [org.springframework.orm.hibernate3.HibernateTransactionManager@5f873eb2]; defaultRollback true
testGetSubjectsForSite time: [00:00:00:068]
Mar 29, 2011 4:44:58 PM org.springframework.test.AbstractTransactionalSpringContextTests endTransaction
INFO: Rolled back transaction after test execution

我尝试将commons-logging.properties文件添加到类路径(与hibernate.properties和test-components.xml相同的位置),但仍然只显示默认的INFO消息。

这是commons-logging.properties文件:

org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger

# handlers
handlers=java.util.logging.ConsoleHandler

# default log level
.level=FINE
org.springframework.level=FINE
org.hibernate.level=FINE

# level for the console logger
java.util.logging.ConsoleHandler.level=FINE
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter

是否有人能够解释为什么我无法打印DEBUG消息?我缺少记录设置吗?

编辑:我尝试过FINEST和DEBUG无济于事。

2 个答案:

答案 0 :(得分:1)

不幸的是,似乎应该在运行时指定Jdk14Logger使用的日志配置文件。 请参阅JDK目录中的以下文件:JDK_HOME / jre / lib / logging.properties(如果未找到配置文件,则使用默认值) 此外,文件路径应该是绝对的,否则它相对于执行JRE的文件夹 - 请参阅java.util.logging.LogManager.readConfiguration()的代码

另见: http://www.javapractices.com/topic/TopicAction.do?Id=143 http://cyntech.wordpress.com/2009/01/09/how-to-use-commons-logging/

答案 1 :(得分:0)

您的默认和休眠日志记录位于“FINE”级别,这更像是log4j术语中的“INFO”。

您需要为org.hibernate设置DEBUG级别,这在JDK日志记录中等于'FINEST'

设置 org.hibernate.level = FINEST(在上面的日志中应启用调试日志)