2016-10-02 80 views
0

我想從Hibernate獲取性能統計信息。我已經在spring上下文中啓用了hibernate統計信息。休眠不顯示性能日誌

<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="packagesToScan" value="org.some.package" /> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop> 
      <prop key="hibernate.hbm2ddl.auto">create</prop> 
      <prop key="hibernate.show_sql">true</prop> 
      <prop key="hibernate.format_sql">true</prop> 
      <prop key="hibernate.generate_statistics">true</prop> 
      <prop key="hibernate.use_sql_comments">true</prop> 
     </props> 
    </property> 
</bean> 

但是我從調試日誌中得到一個空收集。

23:01:52.075 [主] DEBUG org.hibernate.stat.Statistics - HQL:{}時間:{}毫秒,行:{}

我使用Hibernate的3.6版本。

+0

*我沒有從調試日誌中收到空集*:我很困惑。你期望發生什麼,而發生什麼呢?在一方面,爲什麼你使用完全過時的,無人維護的Hibernate版本? –

回答

0

轉出,這是一個記錄器的問題

做了一些調試,我看到兩個HQL,時間,行包含正確的信息。但是記錄器仍然沒有打印出正確的格式。我們正在使用logback 1.0.12,我想知道這是否會導致問題?

@SuppressWarnings({ "UnnecessaryBoxing" }) 
public void queryExecuted(String hql, int rows, long time) { 
    if (isDebugEnabled) { 
     PERF_LOG.debug("HQL: {}, time: {}ms, rows: {}", new Object[] {hql, Long.valueOf(time), Long.valueOf(rows)}); 
    } 
    queryExecutionCount.getAndIncrement();