2013-04-10 30 views
0

我正在使用Maven 3.0.3,SPring 3.1.1.RELEASE,Hibernate 4.1.0.Final和log4j 1.2.15。在我的Maven項目,我在SRC /測試/資源此的log4j.xml文件如何獲得Hibernate綁定參數值以顯示在Junit測試中?

<?xml version="1.0" encoding="UTF-8"?> 
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false"> 
    <appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender"> 
     <layout class="org.apache.log4j.PatternLayout"> 
        <param name="ConversionPattern" value="[%p]: %c - %m%n" /> 
     </layout> 
    </appender> 

    <logger name="org.mainco.subco"> 
     <level value="debug" /> 
    </logger> 

    <logger name="log4j.logger.org.hibernate.SQL"> 
     <level value="DEBUG" /> 
    </logger> 

    <logger name="log4j.logger.org.hibernate.type"> 
     <level value="TRACE" /> 
    </logger> 

    <root> 
     <priority value ="info" /> 
     <appender-ref ref="consoleAppender"/> 
    </root> 

</log4j:configuration> 

我的數據源配置,像這樣在我的測試應用程序上下文:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="${test.mysql.dataSource.driverClassName}" /> 
    <property name="url" value="${test.mysql.dataSource.url}" /> 
    <property name="username" value="${test.mysql.db.user}" /> 
    <property name="password" value="${test.mysql.db.password}" /> 
</bean> 

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="packagesToScan" value="org.mainco.subco" /> 
    <property name="jpaVendorAdapter"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/> 
    </property> 
    <property name="dataSource" ref="dataSource"/> 
    <property name="jpaPropertyMap" ref="jpaPropertyMap" /> 
</bean> 

<util:map id="jpaPropertyMap"> 
    <entry key="hibernate.show_sql" value="true" /> 
    <entry key="dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" /> 
    <entry key="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.EhCacheRegionFactory"/> 
    <entry key="hibernate.cache.provider_class" value="org.hibernate.cache.EhCacheProvider"/> 
    <entry key="hibernate.cache.use_second_level_cache" value="true" /> 
    <entry key="hibernate.cache.use_query_cache" value="false" /> 
    <entry key="hibernate.generate_statistics" value="true" /> 
</util:map> 

然而,當我運行JUnit測試,雖然SQL顯示,但綁定到SQL的參數不會。我怎樣才能改變上面的任何一個,讓綁定參數通過System.out(或在控制檯上)出現? - 戴夫

回答

1

由於您使用的log4j.xml,記錄儀配置應該是

<logger name="org.hibernate.type"> 

<logger name="log4j.logger.org.hibernate.type"> 

後來是log4j.properties風格

0
### Hibernate logging configuration ### 

### Log everything (a lot of information, but very useful for troubleshooting) ### 
#log4j.logger.org.hibernate=info 

### Log HQL and SQL ASTs during query parsing ### 
log4j.logger.org.hibernate.hql.ast.AST=DEBUG, SQL_APPENDER 
log4j.additivity.org.hibernate.hql.ast.AST=false 

### log just the SQL 
log4j.logger.org.hibernate.SQL=DEBUG, SQL_APPENDER 
log4j.additivity.org.hibernate.SQL=false 

### log JDBC bind parameters. Very userfull, when debug parameterized queries ### 
log4j.logger.org.hibernate.type=TRACE, SQL_APPENDER 
log4j.additivity.org.hibernate.type=false 

### log schema export/update ### 
#log4j.logger.org.hibernate.tool.hbm2ddl=info 

### log HQL parse trees 
#log4j.logger.org.hibernate.hql=debug 

### log cache activity ### 
#log4j.logger.org.hibernate.cache=info 

### log transaction activity 
#log4j.logger.org.hibernate.transaction=debug 

### Log all JDBC resource acquisition 
#log4j.logger.org.hibernate.jdbc=debug