ssm框架中,mybatis的sql語句日志輸出


在ssm框架中,常用的日志輸出為Log4j,但按照常規的配置,涉及mybatis那部分日志不能打印出來的;由於沒有日志的輸出,開發人員很難從控制台中迅速找出相應的sql語句,對調試和找錯誤帶來了一定的困擾,針對這個問題,我們需要額外的配置以達到日志的輸出

常見的兩種方法為:

在日志配置文件(log4j.properties)中增加將mybatis那部分日志級別設置為DEBUG,配置如下:

#mybatis部分 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 #與sql相關 log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG

注意:另外需要在定義LOG輸出級別時,把DEBUG級別的也作為日志輸出的一部分,附個人完整Log4j配置:

#定義LOG輸出級別 log4j.rootLogger=DEBUG,INFO,Console,File #定義日志輸出目的地為控制台 log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.Target=System.out #可以靈活地指定日志輸出格式,下面一行是指定具體的格式 log4j.appender.Console.layout = org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern = [%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m %l%n #文件大小到達指定尺寸的時候產生一個新的文件 log4j.appender.File = org.apache.log4j.RollingFileAppender #指定輸出目錄 log4j.appender.File.File = logs/ssm.log #定義文件最大大小 log4j.appender.File.MaxFileSize = 10MB #輸出所以日志,如果換成DEBUG表示輸出DEBUG以上級別日志 log4j.appender.File.Threshold = ALL log4j.appender.File.layout = org.apache.log4j.PatternLayout log4j.appender.File.layout.ConversionPattern = [%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m %l%n #mybatis日志配置 需要將日志的輸出級別調為debug 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 #與sql相關 log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG

配置根Logger,log4j.rootLogger = [ level ] , appenderName
【level】是日志的級別,分別有debug -> info -> warn -> error 四種日志級別;
【appenderName】,配置日志的輸出目錄,同一個日志可以配置多個輸出目的地;
配置log輸出目的地:
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天產生一個日志文件)
org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件)
org.apache.log4j.WriterAppender(將日志信息以流格式發送到任意指定的地方)

2、在Mybatis的配置文件中增加setting配置

個人在搭ssm框架中,mybatis-config.xml文件是省略的,需要后面增加,詳細如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration   
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <!-- 打印查詢語句 -->
        <setting name="logImpl" value="STDOUT_LOGGING" />
    </settings>
</configuration>

日志部分,增加name為logImpl的setting配置,value屬性(即日志的打印方式)可選有:SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING,可以根據自己的需要進行配置,但個人在測試的過程中,只有值為STDOUT_LOGGING時,日志才有輸出,此處存在疑問,有哪位大神能指點一下么?

        另外settings的更多參數可以參考官網文檔:

        http://www.mybatis.org/mybatis-3/zh/configuration.html#settings

注意:在增加mybatis-config.xml后,需要在spring與mybatis的整合配置文件(spring-mybatis.xml)中增加映射才可生效,如下:

<!-- spring和MyBatis整合-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <!-- 自動掃描mybatis配置文件 -->
    <property name="configLocation" value="classpath:mybatis-config.xml"></property>
    <!-- 自動掃描mapping.xml文件 -->
    <property name="mapperLocations" value="classpath:com/merch/mapping/*.xml"></property>
</bean>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM