MyBatis 開啟 Log4j 日志調試信息開關


Log4j 是什么

Log4j 是由 Apache 提供的開源日志框架,用於幫助用戶處理日志信息。

Log4j 能將日志信息分級打印和存儲,而且提供了日志不同的存儲方式,我們可以將日志發送到控制台,或者文件,或者數據庫中等。

日志信息分級如下:(以輕到重)

  • DEBUG:調試
  • INFO:信息
  • WARN:警告
  • ERROR:錯誤
  • FATAL:致命

如果打印 ERROR 和 FATAL 這兩個日志級別,說明系統存在嚴重問題,必須解決或修復。

Log4j 通過一個 log4j.properties 日志配置文件設置日志。

MyBatis 開啟調試日志信息

MyBatis 框架內部也是使用 Log4j 打印日志的,但由於沒有日志配置文件設置日志,所以一般無法顯示DEBUG級日志信息。那么,我們可以在 Java 工程的 src 根目錄下創建 log4j.properties 文件,如下:

log4j.rootLogger=DEBUG,A1
log4j.logger.org.apache=DEBUG
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n

重新執行 MyBatisDemo 結果如下:

2020-06-19 11:11:24,656 [main] [org.apache.ibatis.logging.LogFactory]-[DEBUG] Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter.
2020-06-19 11:11:24,681 [main] [org.apache.ibatis.datasource.pooled.PooledDataSource]-[DEBUG] PooledDataSource forcefully closed/removed all connections.
2020-06-19 11:11:24,682 [main] [org.apache.ibatis.datasource.pooled.PooledDataSource]-[DEBUG] PooledDataSource forcefully closed/removed all connections.
2020-06-19 11:11:24,682 [main] [org.apache.ibatis.datasource.pooled.PooledDataSource]-[DEBUG] PooledDataSource forcefully closed/removed all connections.
2020-06-19 11:11:24,682 [main] [org.apache.ibatis.datasource.pooled.PooledDataSource]-[DEBUG] PooledDataSource forcefully closed/removed all connections.
2020-06-19 11:11:24,882 [main] [org.apache.ibatis.transaction.jdbc.JdbcTransaction]-[DEBUG] Opening JDBC Connection
2020-06-19 11:11:25,333 [main] [org.apache.ibatis.datasource.pooled.PooledDataSource]-[DEBUG] Created connection 1076496284.
2020-06-19 11:11:25,333 [main] [org.apache.ibatis.transaction.jdbc.JdbcTransaction]-[DEBUG] Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@402a079c]
2020-06-19 11:11:25,337 [main] [mapper.UserMapper.selectUserByAge]-[DEBUG] ==>  Preparing: select * from tb_user where age > ? 
2020-06-19 11:11:25,405 [main] [mapper.UserMapper.selectUserByAge]-[DEBUG] ==> Parameters: 20(Integer)
2020-06-19 11:11:25,450 [main] [mapper.UserMapper.selectUserByAge]-[DEBUG] <==      Total: 2
[entity.UserEntity{id=1, userName='zs', password='123456', name='張三', age=22, sex=1, birthday=Sun Sep 02 00:00:00 IRKST 1990, created='2020-06-17 09:30:58.0', updated='2020-06-17 09:30:58.0'}, entity.UserEntity{id=2, userName='ls', password='123456', name='李四', age=24, sex=1, birthday=Sun Sep 05 00:00:00 IRKST 1993, created='2020-06-17 09:30:58.0', updated='2020-06-17 09:30:58.0'}]
2020-06-19 11:11:25,451 [main] [org.apache.ibatis.transaction.jdbc.JdbcTransaction]-[DEBUG] Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@402a079c]
2020-06-19 11:11:25,452 [main] [org.apache.ibatis.transaction.jdbc.JdbcTransaction]-[DEBUG] Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@402a079c]
2020-06-19 11:11:25,452 [main] [org.apache.ibatis.datasource.pooled.PooledDataSource]-[DEBUG] Returned connection 1076496284 to pool.

Process finished with exit code 0

這樣我們就開啟了 MyBatis 框架的 log4j 調試信息開關,由於增加了 Debug 調試信息,打印的內容比之前就多很多。我們從這些調試信息中可以清晰的看到 MyBatis 框架內部的執行過程,非常有利於使用 MyBatis 出錯時幫助分析和定位問題。

如果不想控制台打印這么多調試信息,可以修改 log4j 配置中的 DEBUG,將其改為 ERROR 即可,如下:

log4j.rootLogger=ERROR,A1
log4j.logger.org.apache=ERROR


免責聲明!

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



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