MyBatis 通過使用內置的日志工廠提供日志功能,

在這里我們對STDOUT_LOGGING和LOG4J進行學習,
一、STDOUT_LOGGING
1.什么是STDOUT_LOGGING
STDOUT_LOGGING是MyBatis的標準日志配置,STDOUT_LOGGING的使用無需其他的依賴,只需要在MyBatis的核心組態檔中進行<settings></settings>標簽的配置即可,
2.STDOUT_LOGGING的具體使用實體
(1)配置myvatis-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> <properties resource="db.properties" /> <settings> <setting name="logImpl" value="STDOUT_LOGGING"/> </settings> <typeAliases> <typeAlias type="com.jms.pojo.User" alias="User"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/jms/dao/UserMapper.xml"/> </mappers> </configuration>
關鍵即
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
標簽的配置,
(2)測驗并查看列印的資訊

我們可以看到,首先打開一個JDBC的連接,建立一個一串數字的連接(個人認為這個連接應該是SqlSession),JDBC的事務自動提交設定的是false,接下來是幾個值:
Preparing:SQL陳述句
Parameters:傳入的值
Columns:需要查詢的列名
Row:結果
Total:結果的數量
然后是查詢的結果的展示,JDBC的事務自動提交重新設定的為true,關閉JDBC的連接,將一串數字的連接放回池內,
二、log4j
1.什么是log4j
Log4j是Apache的一個開源專案,通過使用Log4j,我們可以控制日志資訊輸送的目的地是控制臺、檔案、GUI組件,甚至是套介面服務器、NT的事件記錄器、UNIX Syslog守護行程等;我們也可以控制每一條日志的輸出格式;通過定義每一條日志資訊的級別,我們能夠更加細致地控制日志的生成程序,最令人感興趣的就是,這些可以通過一個組態檔來靈活地進行配置,而不需要修改應用的代碼,
2.配置log4j
(1)匯入依賴
<!-- https://mvnrepository.com/artifact/log4j/log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
(2)在CLASSPATH下建立一個log4j.properties檔案
檔案內內容即對log4j的配置,配置內容不固定,按需求填寫,具體格式查閱即可,
以下是我的檔案內容:
#將等級為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/jms.log log4j.appender.file.MaxFileSize=2mb 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.appender.file.append=false #日志輸出級別 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
(3)在MyBatis的核心組態檔mybatis-config.xml中進行log4j的配置
<settings> <setting name="logImpl" value="LOG4J"/> </settings>
(4)運行一下之前的測驗類,看一下結果:
首先看控制臺:

再看生成的log檔案:

其實除了前面多了具體的類,與標準日志似乎差別不大,
(5)還可以在要輸出的類中加入相關陳述句
我們就在測驗類中加入相關陳述句,修改測驗類如下:
package com.jms.dao; import com.jms.pojo.User; import com.jms.utils.MyBatisUtil; import org.apache.ibatis.session.SqlSession; import org.apache.log4j.Logger; import org.junit.Test; public class UserMapperTest { static Logger logger = Logger.getLogger(UserMapperTest.class); @Test public void test() { logger.info("進入測驗"); //利用工具類獲取SqlSession SqlSession sqlSession = MyBatisUtil.getSqlSession(); //利用SqlSession獲取UserMapper介面 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); //呼叫方法 User user = userMapper.getUserbyid(10001); System.out.println(user); sqlSession.close(); logger.info("測驗完成"); } }
進行測驗,測驗結果如下:
控制臺:

日志檔案:

很明顯,在開始和結束多了兩句我們自定義等級的日志資訊,
以下是log4j的等級:
| 級別 | 描述 |
|---|---|
| ALL | 所有級別包括自定義級別, |
| DEBUG | 除錯訊息日志, |
| ERROR | 錯誤訊息日志,應用程式可以繼續運行, |
| FATAL | 嚴重錯誤訊息日志,必須中止運行應用程式, |
| INFO | 資訊訊息, |
| OFF | 最高可能的排名,旨在關閉日志記錄, |
| TRACE | 高于DEBUG, |
| WARN | 用于警告訊息, |
標準等級由低到高:ALL <DEBUG<INFO<WARN<ERROR<FATAL<OFF
當logger設定為某一級時,比它等級低的日志資訊就會被過濾掉,
(本文僅作人人學習記錄用,如有紕漏敬請指正)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/508065.html
標籤:其他
下一篇:全鏈路壓測的整體架構設計,以及5種實作方案流量染色方案、資料隔離方案、介面隔離方案、零侵入方案、服務監控方案【代碼級別】
