J'utilise iBatis avec Spring Framework. Je veux enregistrer le sql qu'iBatis exécute lorsque je dis quelque chose comme
Employee e = (Employee) getSqlMapClientTemplate().queryForObject("emp_sql", emp);
La ligne ci-dessus va chercher l'identifiant "emp_sql" dans le fichier sql ibatis que j'ai. Et ensuite exécuter la requête correspondant à "emp_sql". Je veux enregistrer cette requête.
J'ai le fichier de propriétés log4j xml suivant.
<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>
Je n'arrive toujours pas à obtenir le sql que l'ibatis a exécuté. Y a-t-il quelque chose qui ne va pas dans la configuration ? Dois-je simplement dire
<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>
Dois-je utiliser p6spy ou autre chose ? Ou est-ce qu'il y a quelque chose que je peux faire dans la configuration de log4j pour obtenir les logs sql d'iBatis ?