1. 程式人生 > 實用技巧 >mybatis 日誌實現 學習總結03

mybatis 日誌實現 學習總結03

日誌

1、為什麼要使用日誌

使用日誌能對專案:

  • 除錯:日誌便於記錄程式在之前的執行結果
  • 錯誤定位
  • 資料分析:日誌中蘊含了大量的使用者資料,包括點選行為,興趣偏好等,對公司下一步的戰略方向有一定指引作用。

Mybatis內建的日誌工廠提供日誌功能,具體如下:

  • SLF4J
  • Apache Commons Logging
  • Log4j 2
  • Log4j
  • JDK logging

日誌實現由Mybatis內建日誌工廠確定,由上到下的順序查詢和使用,如果一個都未找到則日誌功能就會被禁用。


2、標準日誌實現

指定Mybatis使用哪個日誌記錄實現。如果此設定不存在,則會自動發現日誌記錄實現。

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

測試,可以看到控制檯有大量的輸出!我們可以通過這些輸出來判斷程式到底哪裡出了Bug


3、Log4j日誌的實現

1、簡潔:

  1. Log4j是Apache的一個開源專案
  2. 可以控制日誌資訊輸送的目的地:控制檯、文字、GUI元件
  3. 能控制每一條日誌的輸出格式

2、實操

1、匯入log4j的jar包

pom.xml

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

2、配置檔案編寫

右鍵resource --> New --> File --> 填“log4j.properties”

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/kuang.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

3、在配置指定log4j為日誌工廠

mybatis-config.xml

<settings>
    <!-- 指定日誌為logj4-->
    <setting name="logImpl" value="LOG4J"/>
</settings>

4、測試

MyTest.java

import com.dao.userMapper;
import com.pojo.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import org.junit.Test;
import utils.MybatisUtils;

public class MyTest {
    static Logger logger = Logger.getLogger(MyTest.class);

    @Test
    public void selectUser() {
        logger.info("info:進入selectUser方法");
        logger.debug("debug:進入selectUser方法");
        logger.error("error: 進入selectUser方法");

        SqlSession session = MybatisUtils.getSession();
        userMapper mapper = session.getMapper(userMapper.class);
        User user = mapper.selectUserById(1);
        System.out.println(user);

        session.close();
    }
}