iBatis、spring、実行されたSQLをログに記録する方法は?質問する

iBatis、spring、実行されたSQLをログに記録する方法は?質問する

私はSpringフレームワークでiBatisを使用しています。次のようなことを言ったときにiBatisが実行するSQLをログに記録したいです。

Employee e = (Employee) getSqlMapClientTemplate().queryForObject("emp_sql", emp);

上記の行は、私が持っている ibatis sql ファイルで「emp_sql」ID を検索します。次に、「emp_sql」に対応するクエリを実行します。このクエリをログに記録します。

次の log4j xml プロパティ ファイルがあります。

<appender name="sqlLogAppender" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="file" value="/disk1/logs/sql.log"/>
    <param name="datePattern" value="'-'yyyy-MM-dd'.txt'"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%m %n"/>
    </layout>
   <filter class="org.apache.log4j.varia.LevelRangeFilter">
        <param name="LevelMin" value="DEBUG"/>
    </filter>
</appender>

<logger name="log4j.logger.com.ibatis">
    <level value="DEBUG"/>
    <appender-ref ref="sqlLogAppender"/>
</logger>


<logger name="log4j.logger.java.sql.Connection">
    <level value="DEBUG"/>
    <appender-ref ref="sqlLogAppender"/>
</logger>

<logger name="log4j.logger.java.sql.PreparedStatement">
    <level value="DEBUG"/>
    <appender-ref ref="sqlLogAppender"/>
</logger>

ibatisが実行したSQLをまだ取得できません。設定に何か問題があるのでしょうか?

<appender name="sqlLogAppender" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="file" value="/disk1/logs/sql.log"/>
    <param name="datePattern" value="'-'yyyy-MM-dd'.txt'"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%m %n"/>
    </layout>
   <filter class="org.apache.log4j.varia.LevelRangeFilter">
        <param name="LevelMin" value="DEBUG"/>
    </filter>
</appender>

<logger name="log4j.logger.java.sql">
    <level value="DEBUG"/>
    <appender-ref ref="sqlLogAppender"/>
</logger>

p6spy または他の何かを使用する必要がありますか? または、iBatis SQL ログを取得するために log4j 構成で実行できる操作はありますか?

ベストアンサー1

log4j 構成に以下を追加します (表示したい部分のコメントを解除します)。

# SqlMap ログ記録構成。
#log4j.logger.com.ibatis=デバッグ
#log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=デバッグ
#log4j.logger.com.ibatis.common.jdbc.ScriptRunner=デバッグ
#log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=デバッグ
#log4j.logger.java.sql=デバッグ
#log4j.logger.java.sql.接続=デバッグ
#log4j.logger.java.sql.ステートメント=デバッグ
#log4j.logger.java.sql.PreparedStatement=デバッグ
#log4j.logger.java.sql.ResultSet=デバッグ

おすすめ記事