2013-07-04 33 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"/> 

如果问题仍然存在,就试试看。祝你好运!