mybatis 日誌實現 學習總結03
阿新 • • 發佈:2020-08-07
日誌
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、簡潔:
- Log4j是Apache的一個開源專案
- 可以控制日誌資訊輸送的目的地:控制檯、文字、GUI元件
- 能控制每一條日誌的輸出格式。
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();
}
}