私は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=デバッグ