2010-10-28 108 views
2

我正在尝试调试有一些性能问题的Web应用程序。我打开Hibernate日志,我看到了很多这样的:“在闭门会议”管理休眠会话

2010-10-28 10:58:00,423 DEBUG [org.hibernate.impl.SessionImpl] - opened session at timestamp: 5276786198212608 
2010-10-28 10:58:01,390 DEBUG [org.hibernate.impl.SessionImpl] - opened session at timestamp: 5276786202173440 
2010-10-28 10:58:01,418 DEBUG [org.hibernate.impl.SessionImpl] - opened session at timestamp: 5276786202288128 
2010-10-28 10:58:26,181 DEBUG [org.hibernate.impl.SessionImpl] - opened session at timestamp: 5276786303717376 

我很担心,有没有关于日志我目前看这个: http://static.springsource.org/spring/docs/2.5.x/reference/orm.html 但它没有任何东西可以让我安心记录日志

回答

1

您如何访问会话?你使用春季交易注释吗?

我们在当前的应用程序中使用hibernate模板..虽然这显然不再需要。我似乎没有看到作为调试出来,虽然我看到其他休眠初始化调试语句。

总之,你也许可以得到会话工厂的引用和直接调用sessionFactory.getStatistics()。getSessionOpenCount()

您可能需要调用setStatisticsEnabled(真)

http://docs.jboss.org/hibernate/stable/core/api/org/hibernate/stat/Statistics.html

那至少会让你获得公开会议的数量,看它是否会不断上升。

根据binil的答案,还有一个关于在不同日志级别打开/关闭日志条目的错误报告。 http://opensource.atlassian.com/projects/hibernate/browse/HHH-2425

3

看着source,该消息似乎是从SessionImpl.java的构造函数中记录下来的。会话关闭时会有相应的日志语句(请参阅方法public Connection close() throws HibernateException),但会记录在TRACE级别。我对slf4j不熟悉,但从this piece of documentation看起来好像TRACEDEBUG更精细。因此,请尝试增加日志记录的数量(可能为ALL?),并验证会话是否已关闭。