java spring logging ibatis

java - iBatis, primavera, ¿cómo registrar el sql que se ejecuta?



spring logging (4)

Estoy usando iBatis con el marco de primavera. Quiero registrar el sql que ejecuta iBatis cuando digo algo como

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

La línea anterior buscará la identificación "emp_sql" en el archivo ibatis sql que tengo. Y luego ejecute la consulta correspondiente a "emp_sql". Quiero registrar esta consulta.

Tengo el siguiente archivo de propiedades 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>

Todavía no puedo obtener el sql que ejecutan los ibatis. ¿Hay algo mal con la configuración? Debería decir

<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>

¿Tengo que usar p6spy o algo más? ¿O hay algo que pueda hacer en la configuración de log4j para obtener los registros de iBatis sql?


Añade esto en tu log4j

<logger name="java.sql" additivity="false"> <level value="debug" /> <appender-ref ref="console" /> </logger>

Esto imprimirá el sql así como los resultados de salida


Añade esto en tu log4j.xml

<logger name="com.ibatis" additivity="false"> <level value="debug"/> <appender-ref ref="APPENDER"/> </logger>


Agregue lo siguiente a su configuración de log4j (elimine lo que desea ver).

# SqlMap logging configuration. #log4j.logger.com.ibatis=DEBUG #log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG #log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG #log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG #log4j.logger.java.sql=DEBUG #log4j.logger.java.sql.Connection=DEBUG #log4j.logger.java.sql.Statement=DEBUG #log4j.logger.java.sql.PreparedStatement=DEBUG #log4j.logger.java.sql.ResultSet=DEBUG


Si está utilizando Log4j como su marco de registro, debe configurar mybatis para que use log4j como su herramienta de registro predeterminada. Puedes hacerlo configurándolo en el archivo mybatis-config.xml de esta manera,

<setting name="logImpl" value="LOG4J"/>

O si no está utilizando mybatis-config.xml y solo las anotaciones, entonces desea utilizar

org.apache.ibatis.logging.LogFactory.useLog4JLogging();

antes de invocar cualquier otro método mybatis para establecer la implementación de registro predeterminada. Lee mas...

Utilice esta configuración en su log4j.properties ,

# Global logging configuration log4j.rootLogger=INFO, stdout # MyBatis mapper interfaces logging configuration... log4j.logger.com.sample.mappers=DEBUG # SqlMap logging configuration. log4j.logger.org.mybatis.spring=DEBUG log4j.logger.org.apache.ibatis=DEBUG # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d [%p] %c - %m%n

Si está utilizando la configuración log4j.xml , intente este equivalente al anterior,

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd"> <log4j:configuration xmlns:log4j=''http://jakarta.apache.org/log4j/''> <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d [%p] %c{1} - %m%n"/> </layout> </appender> <logger name="org.mybatis.spring" additivity="false"> <level value="debug"/> <appender-ref ref="STDOUT"/> </logger> <logger name="com.sample.mappers"> <level value="debug"/> <appender-ref ref="STDOUT"/> </logger> <!-- Other custom 3rd party logger configs --> <root> <priority value ="debug" /> <appender-ref ref="STDOUT" /> </root> </log4j:configuration>

Use el archivo de propiedades o el archivo xml para configurar log4j como se indica arriba y colóquelo en su ruta de clases para que esto funcione correctamente.