這篇文章是邊聽尚硅谷的課程邊記的筆記,也是爲了以後方便查看,視頻連接:https://www.bilibili.com/vide...java
小張負責一個大型系統的開發,爲了監控系統的運行情況,系統中包含大量的System.out.println()語句,爲了更好地管理呢,小張決定寫一個日誌框架對日誌進行管理,他設想的日誌框架應該包含如下幾個功能:spring
在此基礎上小張開發出了這樣一個日誌框架,可是爲了使用這個日誌框架,當小張修改了這個日誌框架中的內容以後,系統中相關的代碼都須要進行修改。爲此,小張想到了一種模式:
小張爲全部的日誌框架寫了一個統一的接口層:日誌門面(抽象層),該日誌門面定義了通用的功能接口,具體的實現能夠有不一樣的實現springboot
日誌門面(日誌抽象層) | 日誌實現 |
---|---|
Jakarta Commons Logging(再也不更新),jboss-logging(生來不爲普通程序猿所用), slf4j | log4j(落後),java.util.Logging(很差用),Logback,Log4j2(與Log4j開發不是同一人) |
最終選擇:日誌門面:slf4j 日誌實現:Logback框架
import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class HelloWorld { public static void main(String[] args) { Logger logger = LoggerFactory.getLogger(HelloWorld.class); logger.info("Hello World"); } }
每一個日誌框架都有本身的配置文件,使用slf4j後,配置文件仍是使用日誌實現框架本身自己的配置文件ide
假如我如今開發A系統用的日誌框架是slf4j+logback,可是開發系統時用到了spring框架(框架自己的日誌記錄依賴common-logging),Hibernate(jboss),Mybatis....那麼我這個系統如何統一使用slf4j+logback進行日誌記錄??
解決方案:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </dependency>
總結:spring-boot
- SpringBoot底層也是使用slf4j+Logback的方式進行日誌記錄;
- SpringBoot也把其餘的日誌框架替換成了slf4j
- 若是咱們引入了其餘框架,必定要把這個框架的默認日誌框架移除掉
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency>
SpringBoot默認給咱們配置好了日誌,能夠直接使用,默認的日誌級別是info;ui
Logger logger = LoggerFactory.getLogger(getClass()); @Test public void contextLoads() { /*日誌級別trace<debug<info<warn<error*/ logger.trace("這是trace日誌"); logger.debug("這是debug日誌"); logger.info("這是info日誌"); logger.warn("這是warn日誌"); logger.error("這是error日誌"); }
# 配置整個項目的日誌級別 logging.level.root=debug # 配置指定包下面的日誌級別 logging.level.com.luhuiling=info # logging.file指定日誌文件的名稱,若是不指定,日誌只在控制檯輸出 logging.file=D:/springboot.log # logging.path指定日誌文件的路徑,若是不指定,文件將存放在項目根目錄下 logging.path # 控制檯輸出日誌的格式 logging.pattern.console # 文件中輸出日誌的格式 logging.pattern.file