2013-07-04 53 views
5

在我的項目,我有登錄SQL查詢中使用的MyBatis和Spring

<bean id="ABCSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
    <property name="dataSource" ref="ABCDataSource" /> 
    <property name="mapperLocations"> 
     <list> 
     <value>classpath:com/myco/dao/XYZMapper.xml</value> 
     </list> 
    </property> 
<bean> 

log4j.logger.java.sql.Connection=debug, stdout, abclog 
log4j.logger.java.sql.PreparedStatement=debug, stdout, abclog 
log4j.logger.java.sql=debug, stdout, abclog 
log4j.logger.org.mybatis=debug, stdout, abclog 
log4j.logger.org.apache.ibatis=debug, stdout, abclog 

我沒有看到的SQL查詢,當我運行日誌 想知道什麼applicartion我失蹤

看到這個職位how to configure log4j for Mybatis to print my SQL 建議改變mybatis類的配置,但不知道如何處理spring SqlSessi onFactoryBean

回答

1

使用最簡單的方式配置進行測試並查看日誌。然後自定義輸出(例如文件,級別)。

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" 
            "log4j.dtd" > 
<log4j:configuration> 

    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d %-5p (%c.java:%L).%M - %m%n"/> 
    </layout> 
    </appender> 

    <root> 
    <priority value="TRACE" /> 
    <appender-ref ref="STDOUT"/> 
    </root> 

</log4j:configuration> 
+0

在哪裏寫配置> – eatSleepCode

+0

嗨,@eatSleepCode我不能跟着你。你究竟是什麼意思? –

+0

我的意思是在log4j.xml中寫配置的位置?另外的事情是我無法在控制檯上獲得輸出。 – eatSleepCode

1

嘗試將所有必要的行添加到您的配置中。

下面是應該工作樣本:

#configure root logger 
log4j.rootLogger=ERROR, file, stdout 

#configure all mybatis mappers logging 
log4j.logger.com.myco.dao=ERROR 
#configure your mapper logging 
log4j.logger.com.myco.dao.XYZMapper=DEBUG 

#configure appender 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 
5

您可以MyBatis的添加記錄通過它的MyBatis-config.xml中。

添加log4j的,像這樣:

的MyBatis-config.xml中

<configuration> 
    <settings> 
    ... 
    <setting name="logImpl" value="LOG4J"/> 
    ... 
    </settings> 
</configuration> 

然後在你的log4j.properties,添加類,你想登錄:

log4j.logger.org.mybatis.example.MyMapper=TRACE 

SQL語句在DEBUG級別記錄,因此將輸出設置爲DEBUG:

log4j.logger.org.mybatis.example=DEBUG 

有關更多詳細信息,請參閱documentation

3

how to configure logback for Mybatis to print my SQL的回答引用,我不確定這是否會對您有用。它提供了用於記錄的Spring配置。這種方法對我有用。

要記錄特定的MyBatis映射器設置調試(TRACE 看到的查詢參數和結果)水平記錄儀具有完全 合格的映射名

<logger name="com.mycompany.myapp.mapper.MyMapper" level="DEBUG"/> 

您可以登錄所有SQL語句來自所有映射器的SQL語句,如果它們在 相同的包中,像這樣

<logger name="com.mycompany.myapp.mapper" level="DEBUG"/> 

如果問題仍然存在,就試試看。祝你好運!