SoringBoot日誌詳解

市場上的日誌框架

市場上的日誌框架有很多,比如JUL,JCL,Jboss-logging,logback,log4j,log4j2,slf4j等。

這些日誌主要分爲兩個部分:

  • 日誌門面(日誌的抽象層):JCL,SLF4j,Jboss-logging
  • 日誌實現:log4j,log4j2,logback,JUL

而在SpringBoot中,最終我們會選擇SLF4j和logback這樣的組合。

SLF4j的使用

在日常開發的時候,日誌記錄方法的調用,不應該直接調用日誌的實現類,而是調用日誌抽象層裏面的方法。
在使用SLF4j之前需要導入SLF4j的jar和logback的實現jar。

示例:

public class HelloWorld{
	public static void main(String[] args){
		Logger logger=LoggerFactory.getLogger(HelloWorld.class);
		logger.info("Hello World!!!");
	}
}

但是在SpringBooot中會遇到如下問題:某個a項目使用的是slf4j+logback模式,但是項目中Spring使用的是commons-logging日誌,Hibernate使用的是Jboss-logger。所以有時候我們需要統一日誌記錄
在這裏插入圖片描述
總結:

  1. 將系統中其他日誌框架先排除出去
  2. 用中間包來代替原來的日誌框架
  3. 在導入slf4j的其他實現

SpringBoot日誌關係

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
</dependency>

SpringBoot使用它來做日誌功能。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
</dependency>

在這裏插入圖片描述

總結:

  1. SpringBoot底層也是使用SLF4j和logback的方式進行日誌記錄。
  2. SpringBoot也會把其他的日誌文件都替換成了SLF4j。
  3. 也使用了中間替換包
  4. 如果需要引入其他的日誌框架,一定要把這個框架的默認日誌文件依賴移除掉。

示例:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
	<exclusions>
		<exclusion>
			<groupId>commons-logging</groupId>
    		<artifactId>commons-logging</artifactId>
    	</exclusion>
	</exclusions>
</dependency>

日誌文件的編寫

logging.level.com.learn=trace      #設置顯示日誌的等級

#不指定路徑則在當前項目下生成springboot.log日誌
#也可以指定完整的路徑
logging.file.name=E:/springboot.log

#在當前磁盤的根路徑下創建spring文件夾和裏面的log文件夾,使用spring.log作爲默認文件
logging.path=/spring/log

#在控制檯輸出日誌的格式
logging.pattern.console=%d{yyyy-mm-dd}[%thread]%-5level %logger{50} -%msg%n



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