web-dev-qa-db-ja.com

MyBatisとSpringを使用してプロジェクトにSQLクエリを記録する

私のプロジェクトでは

<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クエリが表示されない何が欠けているのか知りたい

この投稿を見た MybatisがSQLを出力するようにlog4jを構成する方法 mybatisクラスの構成を変更することを提案しているが、SpringSqlSessionFactoryBeanを使用する方法がわからない

6
Lav

Mybatis-config.xmlを介してMybatisのログを追加できます。

次のように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

詳細については、 ドキュメント を参照してください。

7
Matt

Mybatisのログバックを構成してSQLを出力する方法 の回答から引用すると、これが完全に機能するかどうかはわかりません。ロギング用のSpring構成を提供します。このアプローチは私のために働いた。

特定のmybatisマッパーのSQLステートメントをログに記録するには、完全修飾マッパー名を使用してロガーのDEBUG(クエリパラメーターと結果を表示するTRACE)レベルを設定します

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

このように同じパッケージに含まれている場合は、すべてのマッパーからのすべてのSQLステートメントをログに記録できます。

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

問題がまだある場合は、試してみてください。幸運を!

5
Gunith D

最も簡単な方法の構成でテストし、ログを確認します。次に、出力(ファイル、レベルなど)をカスタマイズします。

<?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>
1
Paul Vargas

必要なすべての行を構成に追加してみてください。

動作するはずのサンプルは次のとおりです。

#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
1
Nailgun