2010-11-02 14 views
13

Bahar çerçevesiyle iBatis kullanıyorum. Yukarıdaki çizgi ben ibatis sql dosyasında "emp_sql" id arayacaktıriBatis, bahar, çalıştırılan sql nasıl kaydedilir?

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

gibi bir şey derken iBatis yürüten sql giriş yapmak istiyorum. Ve sonra "emp_sql" ile ilgili sorguyu çalıştırın. Bu sorguyu günlüğe kaydetmek istiyorum.

Aşağıdaki log4j xml özellikleri dosyasına sahibim.

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

Hala ibatis'in yürütüldüğü sql'i alamıyorum. Yapılandırmada bir sorun mu var? Sadece

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

Ben p6spy veya başka bir şey kullanmak zorunda mıyım dememiz gerekir mi? Veya iBatis sql günlüklerini almak için log4j yapılandırmasında yapabileceğim bir şey var mı?

+0

iBatis veya MyBatis (sürüm 3)? – AngerClown

cevap

15

Aşağıdakileri log4j yapılandırmanıza ekleyin (görmek istediğiniz şeyleri kaldırın).

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

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

Bu sql yanı sıra log4j.xml içinde

3

Bunu ekle çıkış sonuçlarını yazdırmak olacaktır log4j bu ekle

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

ise Log4j'yi loglama çerçeveniz olarak kullanıyorsanız, mybatis'i log4j'yi varsayılan kayıt aracı olarak kullanmak için ayarlamanız gerekir. Sen böyle mybatis-config.xml ayarlayarak

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

yapabilirsiniz Yoksa mybatis-config.xml ve sadece ek açıklamaları kullanmıyorsanız, o zaman

org.apache.ibatis.logging.LogFactory.useLog4JLogging(); 
kullanmak istiyorum Varsayılan günlüğe kaydetme uygulamasını ayarlamak için başka bir mybatis yöntemini çağırmadan önce

. senin log4j.properties yılında Read More...

kullanın bu yapılandırma,

# 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 

Yukarıdaki bu eşdeğerini deneyin log4j.xml yapılandırmayı kullanıyorsanız,

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

Ya kullanım özellikleri Yukarıdaki gibi log4j yapılandırmak için dosya veya xml dosyası ve düzgün çalışması için bunun için classpath yerleştirin.