mybatis log


mybatis 的日志實現

1、日志工廠

設置具體的日志實現在mybatis-config.xml配置文件中setting標簽中的logImpl屬性

分別有:

  • SLF4J
  • LOG4J (常用)
  • LOG4J2 (log4j升級版,在不同情況下性能不同)
  • JDK_LOGGING (JDK集成的默認日志實現)
  • COMMONS_LOGGING
  • STDOUT_LOGGING (不需要配置拿來就能用的日志)
  • NO_LOGGING (不使用任何日志)

先使用STDOUT_LOGGING這個最簡單的日志實現體驗一下功能

首先,在mybatis-config.xml配置文件中設置setting標簽中的logImpl屬性

<settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>

運行一下,看一下日志輸出了哪些具體東西:
image
可以看到輸出了許多信息:

  • Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter(使用的日志實現)
  • Opening JDBC Connection (打開一個JDBC連接)
  • Created connection 1293618474. (創建一個連接)
  • Setting autocommit to false on JDBC Connection(設置自動提交為false)
  • Preparing: select * from user where id=? (預編譯的語句)
  • Parameters: 1(Integer) (參數的數量以及類型)
  • Columns: id, user_name, user_password (要查詢的字段名)
  • Row: 1, 陳修行_new, 5555 (具體的值)
  • Total: 1 (共計為1)

可以看到輸出的信息還是十分全面的。不過做不到許多自定義的功能

2、log4j

為了更全面的日志功能,和自由的自定義調試輸出,log4j來了

先把logImpl的值改為LOG4J

<settings>
    <!--    <setting name="logImpl" value="STDOUT_LOGGING"/>-->
    <setting name="logImpl" value="LOG4J"/>
</settings>

然后導入log4j依賴

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

因為log4j需要一個配置文件來規定具體的行為,所以我們還需要一個log4j.properties

#將等級為DEBUG的日志信息輸出到console和file這兩個目的地,console和file的定義在下面的代碼
log4j.rootLogger=DEBUG,console,file

#控制台輸出的相關設置
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%c]-%m%n

#文件輸出的相關設置
log4j.appender.file = org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./log/Test.log
log4j.appender.file.MaxFileSize=10mb
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n

#日志輸出級別
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

P.S. log4j在此僅作簡單的應用 關於log4j配置文件更詳細的資料參考具體文章

運行:
image
可以看到輸出的結果與上一個STDOUT_LOGGING基本一致,同時在./log/Test.log的位置生成了一篇同樣的日志
image

3、在調試中使用log4j

有了如此工具,我們就不用在每次調試的時候在控制台使用System.out輸出了,通過簡單的一行代碼就可以在各種類中使用日志輸出

public class MyTest {
    static Logger logger = Logger.getLogger(MyTest.class);
    
    @Test
    public void log4jTest(){
        logger.info("info:進入了log4jTest");
        logger.debug("debug:進入了log4jTest");
        logger.error("error:進入了log4jTest");
    }
}

不同的方法代表了不同的級別,在項目合適的地方加上不同級別的日志輸出是一個必不可少的行為。

4、總結

如此 log4j 就算可以簡單地使用了,在后續的項目中會是一個得力的工具


免責聲明!

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



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