slf4J輸出mybatis日誌的方法(非stdout方式)

slf4J輸出mybatis日誌的方法(非stdout方式)

前言

現在很多項目中都是直接用的@Slf4j的註解來打印日誌,然後又想看mybatis的日誌,自己之前也各種網上找方法,配置的東西很多然而又不一定有效。
這個算是已經在自己項目試了有效了的。這裏說的只適用於項目使用slf4j日誌, mybatis和mybatis-plus, slf4j 和slf4j2, apache的log不一樣都可能不生效

依賴

slf4j的依賴:

  <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.7</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.7</version>
        </dependency>

配置

slf4j配置

下面的配置關鍵有兩點.

  1. 保證debug日誌能輸出,這個可以自己打印試試
  2. log4j.logger.org.mybatis=debug
# 關鍵
log4j.logger.org.mybatis=debug

# 下面的配置按自己需求而定, 不過要確保debug級別的日誌能輸出到debug文件

log4j.rootLogger=DEBUG,console,D
############### 控制檯 ###################
log4j.appender.logfile.encoding=UTF-8
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=${property.pattern}

############### DEBUG級別 ###################
# 日誌輸入到debug
log4j.appender.D.Threshold=DEBUG
log4j.appender.D.append=true
log4j.appender.D.file=../logs/oa-exchange/debug/debug.log
log4j.appender.D.DatePattern='-'yyyyMMdd'.log'
.....剩下的日誌配置

mybatis配置

這個在mybatis配置文件中加上

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

效果

在這裏插入圖片描述
如果slf4j日誌配置中, 沒有 log4j.logger.org.mybatis=debug, 就可能只有黃色框框的信息, 沒有紅色信息 (可以幫助我們知道是否開啓了事務, 個人覺得很重要)

其他幾種配置

mybatis的配置中, 針對項目使用不同的日誌, 有不同的配置

SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING| STDOUT_LOGGING | NO_LOGGING

比如


<configuration>
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING" />  ====》System.out.pringln.
    </settings>
</configuration>

這也是網上常見的一種, 這種方式不太好的地方, 就是它還是作爲控制檯輸出的System.out.pringln, 無法使用我們的日誌配置格式, 也沒有刷到日誌文件中.

而且如果項目使用的是slf4j, 使用LOG4J | LOG4J2啓動項目都會報錯

Mybatis 的內置日誌工廠提供日誌功能,內置日誌工廠將日誌交給以下其中一種工具作代理:
SLF4J
Apache Commons Logging
Log4j 2
Log4j
JDK logging
MyBatis 內置日誌工廠基於運行時自省機制選擇合適的日誌工具。它會使用第一個查找得到的工具(按上文列舉的順序查找)。如果一個都未找到,日誌功能就會被禁用。

未指定時自動查找???什麼意思呢???
只要你的springmvc 工程中配置了log4j.properties ,
<setting name="logImpl" value="LOG4J" /> === >可寫可不寫, 這個自己試了下, 註釋了確實仍然生效。
就會按照上文列舉的順序查找到對應的配置日誌框架Log4。

官網原文:
https://mybatis.org/mybatis-3/logging.html
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章