我正在尝试使用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无济于事。
答案 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(在上面的日志中应启用调试日志)