javascript
Spring Boot 日志管理
在代碼有問題的時(shí)候,很多人應(yīng)該都是通過 debug 的方式去排查,往往忽略了日志的重要性。
好的日志管理可以快速定位問題出現(xiàn)的位置,也可以提高代碼的閱讀性。這篇博文主要介紹一下 Spring Boot 中關(guān)于日志方面的知識(shí)。
一、Logging 介紹
Spring Boot 為 Java Util Logging,Log4J2 和 Logback 提供了默認(rèn)配置。每個(gè)日志框架,都默認(rèn)配置了控制臺(tái)輸出,并且還提供了日志文件輸出功能。
如果你使用 Spring Boot 的 Starters,那么默認(rèn)使用的日志框架是 Logback。Spring Boot 底層也對(duì) Java Util Logging,Commons Logging,Log4J 或 SLF4J 日志框架進(jìn)行了適配。因此只要進(jìn)行相關(guān)的設(shè)置,就可以實(shí)現(xiàn)日志框架的切換。
提供了這么多日志框架,應(yīng)該選擇哪一個(gè)呢?不用擔(dān)心,在不修改任何日志依賴項(xiàng)的時(shí)候,Spring Boot 的日志框架就可以正常運(yùn)行。
二、Logging 格式
Spring Boot 默認(rèn)日志輸出如下:
- 日期時(shí)間:精確到毫秒
- 日志級(jí)別:ERROR, WARN, INFO, DEBUG or TRACE
- 進(jìn)程 id
- 分割符:用于區(qū)分實(shí)際的日志記錄
- 線程名:括在方括號(hào)中
- 日志名字:通常是源類名
- 日志信息
三、Logging 級(jí)別
日志級(jí)別從低到高依次是:TRACE < DEBUG < INFO < WARN < ERROR < FATAL。Logback 日志不提供 FATAL 級(jí)別,它被映射到 ERROR 級(jí)別。
Spring Boot 只會(huì)輸出比當(dāng)前級(jí)別高的日志,默認(rèn)的日志級(jí)別是 INFO,因此低于 INFO 級(jí)別的日志記錄都不輸出。
可以在 application.properties 配置文件中通過 logging.level.<logger-name>=<level> 方式設(shè)置日志的級(jí)別。
在默認(rèn)級(jí)別(INFO)下執(zhí)行下面的代碼:
@SpringBootTest @RunWith(SpringRunner.class) public class LoggerTest {private static final Logger logger = LoggerFactory.getLogger(LoggerTest.class);@Testpublic void test() {logger.trace("trace 級(jí)別的日志");logger.debug("debug 級(jí)別的日志");logger.info("info 級(jí)別的日志");logger.warn("warn 級(jí)別的日志");logger.error("error 級(jí)別的日志");} }控制臺(tái)輸出如下:
四、other
4.1 日志文件輸出
默認(rèn)情況下,Spring Boot 日志僅輸出在控制臺(tái),不會(huì)寫入日志文件。如果想要寫入日志文件,需要在
application.properties 中設(shè)置 logging.file 或 logging.path 屬性。
- logging.file:設(shè)置文件,可以是絕對(duì)路徑,也可以是相對(duì)路徑。
- logging.path:設(shè)置目錄,會(huì)在該目錄下創(chuàng)建一個(gè) spring.log 文件,寫入日志內(nèi)容
日志文件在達(dá)到 10 MB 時(shí)會(huì)輪換,并且與控制臺(tái)輸出一樣,默認(rèn)情況下會(huì)記錄 ERROR 級(jí)別,WARN 級(jí)別和 INFO 級(jí)別的消息。 可以使用 logging.file.max-size 屬性更改大小限制。
4.2 通用配置
下面是 application.properties 文件中關(guān)于日志的配置,貼出來(lái)供大家參考。
# 啟用日志顏色 spring.output.ansi.enabled=always logging.level.root=INFO # mapper 接口所在的包設(shè)置為 debug logging.level.com.×××.mapper=DEBUG # 在當(dāng)前項(xiàng)目下生成日志文件 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%nPS:
雖然 Spring Boot 適配了多種日志框架,一般情況下,我們不會(huì)切換掉 Logback,因?yàn)?Logback 相對(duì)于其他的日志框架速度更快,占用內(nèi)存更少。
關(guān)于工作中日志的開發(fā),可以參考一下這篇博文:日志打印
總結(jié)
以上是生活随笔為你收集整理的Spring Boot 日志管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 报税怎么报 纳税申报认证方法介绍
- 下一篇: Java 并发编程系列之闭锁(Count