2013-04-26 23 views
7

私はSpring 3.1.1、MyBatis 3.1.1、MySQL 5.0.67を使用しています。私はそのクエリにSQLクエリが実行されるステートメントとパラメータを参照することができ、これらの構成によりlog4jでSQLクエリ結果ログを出力するにはどうすればよいですか?

log4j.logger.org.springframework=DEBUG 
log4j.logger.org.apache=DEBUG 
log4j.logger.org.mybatis=DEBUG 

log4j.logger.java.sql=DEBUG 
log4j.logger.java.sql.Connection=DEBUG 
log4j.logger.java.sql.Statement=DEBUG 
log4j.logger.java.sql.PreparedStatement=DEBUG 
log4j.logger.java.sql.ResultSet=DEBUG 

が、私がすることはできません:

<bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close">  
    <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
    <property name="url" value="${jdbc.url}" /> 
    <property name="username" value="${jdbc.username}" /> 
    <property name="password" value="${jdbc.password}" /> 
    <property name="validationQuery" value="select 1"/> 
    <property name="testWhileIdle" value="true"/> 
    <property name="timeBetweenEvictionRunsMillis" value="14400000"/>    
    <property name="testOnBorrow" value="false"/>  
</bean> 

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="configLocation" value="classpath:mybatis/myBatisConfig.xml"/> 
</bean> 

<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"> 
    <constructor-arg ref="sqlSessionFactory"/> 
</bean> 

<bean id="transactionManager" 
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager" 
    p:dataSource-ref="dataSource"/> 

<tx:annotation-driven transaction-manager="transactionManager"/> 

そしてlog4.propertiesは以下の通りです:私の春の構成は以下の通りです照会結果ログを参照してください。私のログは次のようなものです:

[org.mybatis.spring.SqlSessionUtils] - Creating a new SqlSession 
[org.mybatis.spring.SqlSessionUtils] - SqlSession    [[email protected]] was not registered for synchronization because synchronization is not active 
[org.springframework.jdbc.datasource.DataSourceUtils] - Fetching JDBC Connection from DataSource 
[org.mybatis.spring.transaction.SpringManagedTransaction] - JDBC Connection  [ProxyConnection[PooledConnection[[email protected]]]] will not be managed by Spring 
[java.sql.Connection] - ooo Using Connection  [ProxyConnection[PooledConnection[[email protected]]]] 
[java.sql.Connection] - ==> Preparing: SELECT col FROM table WHERE col1=? AND col2=? 
[java.sql.PreparedStatement] - ==> Parameters: 93(Integer), 4(Integer) 
[org.mybatis.spring.SqlSessionUtils] - Closing non transactional SqlSession  [[email protected]] 
[org.springframework.jdbc.datasource.DataSourceUtils] - Returning JDBC Connection to DataSource 

クエリ結果を含むログを印刷する方法はありますか?

答えて

3

二つの方法:

  • log4j.logger.java.sql.ResultSet = TRACE

またはロギングを設定するには、名前空間を使用しています。

log4j.logger.org.springframework.jdbc.core.StatementCreatorUtils = TRACE

このエントリを出力します。これが私の作品は何3.2

http://mybatis.github.io/mybatis-3/logging.html

0

はMyBatisの中だけ伐採方法でありますこれらのように:私の場合は

... 
TRACE SimpleAsyncTaskExecutor-1 org.springframework.jdbc.core.StatementCreatorUtils - Setting SQL statement parameter value: column index 1, parameter value [12345], value class [java.math.BigDecimal], SQL type 3 
TRACE SimpleAsyncTaskExecutor-1 org.springframework.jdbc.core.StatementCreatorUtils - Setting SQL statement parameter value: column index 2, parameter value [ADDRESS], value class [java.lang.String], SQL type 12 
TRACE SimpleAsyncTaskExecutor-1 org.springframework.jdbc.core.StatementCreatorUtils - Setting SQL statement parameter value: column index 3, parameter value [20130916], value class [java.math.BigDecimal], SQL type 3 
... 

私はWH、春のバッチアプリケーションでJdbcBatchItemWriter内側のクエリを実行している使用していますichは名前付きparamsを使用しているので、一般的な解決策ではないかもしれません。

関連する問題