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>
運行一下,看一下日志輸出了哪些具體東西:
可以看到輸出了許多信息:
- 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配置文件更詳細的資料參考具體文章
運行:
可以看到輸出的結果與上一個STDOUT_LOGGING基本一致,同時在./log/Test.log的位置生成了一篇同樣的日志
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 就算可以簡單地使用了,在后續的項目中會是一個得力的工具