springboot-日誌框架

一、日誌框架簡介java

  對於一個應用程序來講,日誌的記錄是必不可少的一部分。線上的問題追蹤,基於日誌業務邏輯統計分析等都離不開日誌。java領域存在許多已經寫好成熟的日誌框架,常常使用的有JCL(jakarta Commons logging), SLF4J(simple Logging facade java), jboss-logging, log4j, JUL(java.util.logging), log4j2, logback等。spring

  從實現來講,java框架分爲兩種,一種是日誌門面(日誌的抽象層)和日誌實現,因此咱們在選日誌框架的時候,通常都是選一個日誌門面,而後再選一個日誌實現。其中,日誌門面包括JCL(jakarta Commons logging), SLF4J(simple Logging facade java), jboss-logging等,而日誌實現則包括 log4j, JUL(java.util.logging), log4j2, logback。設計模式

  Spring框架默認使用的就是JCL, 實現層能夠選log4j或者log4j2,而Spring boot選用的是 SLF4J和logbackspringboot

二、日誌框架之間的關係框架

  由於日誌框架之間沒用造成統一的接口,所咱們在選日誌門面和日誌實現的時候不能選錯。而日誌抽象接口也基本分爲兩大陣營了,一個是JCL(jakarta Commons logging),另外一個是SLF4J。ide

  Commons Logging和Slf4j是日誌門面(門面模式是軟件工程中經常使用的一種軟件設計模式,也被稱爲正面模式、外觀模式。它爲子系統中的一組接口提供一個統一的高層接口,使得子系統更容易使用)。log4j和Logback則是具體的日誌實現方案。能夠簡單的理解爲接口與接口的實現,調用這隻須要關注接口而無需關注具體的實現,作到解耦。spa

  其中比較經常使用的組合使用方式是Slf4j與Logback組合使用(SpringBoot),Commons Logging與Log4j組合使用(Spring)。debug

  Logback必須配合Slf4j使用。因爲Logback和Slf4j是同一個做者,其兼容性不言而喻。設計

三、SLF4J使用日誌

  開發的時候,日誌記錄方法的調用,不該該來直接調用日誌的實現類,而是調用日誌抽象層裏面的方法,給系統導入slf4j和logback的實現jar包

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");
  }
}
View Code

  加入咱們想在springBoot使用其餘框架實現呢,要怎麼辦?以下圖

  

  好比咱們先在SpringBoot中使用log4j框架日誌,不單單要導入log4j.jar包,還要導入slf4j-log412.jar包,該jar包是一個是適配器,將slf4抽象接口和log4j進行適配。每個日誌的實現框架都有本身的配置文件,使用slf4j之後,配置文件仍是作成日誌實現框架的配置文件。

 

四、日誌級別

  日誌級別由低到高:trace<debug<info<warn<error,日誌會輸出大於等於當前所設置的日誌級別,好比我設置日誌級別爲info,則就輸出info、warn、和error級別的日誌信息,trace和debug將被忽視。咱們還能夠設置把日誌寫到文件中,好比配置  logging.file=d:/springboot.log,則會在d盤上生成springboot.log文件。logging.path配置的是制定日誌文件生成在哪一個文件夾。

相關文章
相關標籤/搜索