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.