SpringBoot日志管理

在代碼有問題的時候,很多人應該都是通過 debug 的方式去排查,往往忽略了日志的重要性。

好的日志管理可以快速定位問題出現的位置,也可以提高代碼的閱讀性。這篇博文主要介紹一下 Spring Boot 中關于日志方面的知識。

一、Logging 介紹

Spring Boot 為 Java Util Logging,Log4J2 和 Logback 提供了默認配置。每個日志框架,都默認配置了控制臺輸出,并且還提供了日志文件輸出功能。

如果你使用 Spring Boot 的 Starters,那么默認使用的日志框架是 Logback。Spring Boot 底層也對 Java Util Logging,Commons Logging,Log4J 或 SLF4J 日志框架進行了適配。因此只要進行相關的設置,就可以實現日志框架的切換。

提供了這么多日志框架,應該選擇哪一個呢?不用擔心,在不修改任何日志依賴項的時候,Spring Boot 的日志框架就可以正常運行。

二、Logging 格式

Spring Boot 默認日志輸出如下:


  • 日期時間:精確到毫秒
  • 日志級別:ERROR, WARN, INFO, DEBUG or TRACE
  • 進程 id
  • 分割符:用于區(qū)分實際的日志記錄
  • 線程名:括在方括號中
  • 日志名字:通常是源類名
  • 日志信息

三、Logging 級別

日志級別從低到高依次是:TRACE < DEBUG < INFO < WARN < ERROR < FATAL。Logback 日志不提供 FATAL 級別,它被映射到 ERROR 級別。

Spring Boot 只會輸出比當前級別高的日志,默認的日志級別是 INFO,因此低于 INFO 級別的日志記錄都不輸出。

可以在 application.properties 配置文件中通過 logging.level.<logger-name>=<level>方式設置日志的級別。

在默認級別(INFO)下執(zhí)行下面的代碼:

@SpringBootTest
@RunWith(SpringRunner.class)
public class LoggerTest {

    private static final Logger logger = LoggerFactory.getLogger(LoggerTest.class);

    @Test
    public void test() {
        logger.trace("trace 級別的日志");
        logger.debug("debug 級別的日志");
        logger.info("info 級別的日志");
        logger.warn("warn 級別的日志");
        logger.error("error 級別的日志");
    }
}

控制臺輸出如下:


四、other

4.1 日志文件輸出

默認情況下,Spring Boot 日志僅輸出在控制臺,不會寫入日志文件。如果想要寫入日志文件,需要在
application.properties 中設置 logging.filelogging.path 屬性。
logging.file:設置文件,可以是絕對路徑,也可以是相對路徑。
logging.path:設置目錄,會在該目錄下創(chuàng)建一個 spring.log 文件,寫入日志內容

日志文件在達到 10 MB 時會輪換,并且與控制臺輸出一樣,默認情況下會記錄 ERROR 級別,WARN 級別和 INFO 級別的消息。 可以使用 logging.file.max-size 屬性更改大小限制。

4.2 通用配置

下面是 application.properties 文件中關于日志的配置,貼出來供大家參考。

# 啟用日志顏色
spring.output.ansi.enabled=always
logging.level.root=INFO
# mapper 接口所在的包設置為 debug
logging.level.com.×××.mapper=DEBUG
# 在當前項目下生成日志文件
logging.file=./logs/×××.log
logging.pattern.console=%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %clr(%logger){cyan} %clr(%msg%n){green}
logging.pattern.file=%d{yyyy/MM/dd-HH:mm} [%thread] %-5level %logger- %msg%n

PS:

雖然 Spring Boot 適配了多種日志框架,一般情況下,我們不會切換掉 Logback,因為 Logback 相對于其他的日志框架速度更快,占用內存更少。

原文鏈接:https://blog.csdn.net/codejas/java/article/details/82144667

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容