Spring Boot筆記 -- 日誌

一、日誌

1. 日誌框架

市面上的日誌框架:

  • JUL, JCL, log4j, log4j2, slf4j…

日誌門面: JCL, SLF4j, joss-logging

日誌實現:Log4j , Log4j2 , JUL , Logback

SpringBoot: 底層是Spring框架, Spring框架默認是用JCL

SpringBoot選用SLF4j和Logback

2. SLF4j使用

1. 如何在系統中使用SLF4j

以後開發的時候,日誌記錄方法的調用,不應該來直接調用日誌的實現類,而是調用日誌抽象層裏面的方法

給系統裏賣弄導入slf4j的jar和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");
  }
}

每一個日誌的實現框架都有自己配置文件。使用slf4j以後,配置文件還是做成日誌實現框架自己本身的配置文件

2. 遺留問題

a.(slf4j+ logback): Spring(commons-logging )、 Hibernate(jobs-logging)。一個系統中用到了不同的框架,而不同的框架又用不同的l og框架,造成混亂

統一日誌記錄,即使是別的框架和我一起統一使用slf4j進行輸出:

​ jcl-over-slf4j.jar replaces commons-logging.jar

​ log4j-over-slf4j.jar replaces log4j.jar

​ 當應用程序調用jcl-over-slf4j.jar 或者 log4j-over-slf4j.jar的API的時候,會轉到SLF4j解析

如何將系統中所有的日誌都統一到slf4j:

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

3. Spring boot日誌關係

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

SpringBoot 使用以下來做日誌功能:

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

總結:

1. Spring boot底層也是使用slf4j + logback的方式進行日誌記錄
2. spring boot也把其他的日誌都替換成了slf4j

4. 默認配置

1. 默認配置

spring boot 默認幫我們配置好了日誌

Logging.level=trace
Logging.file=spring.log
logging.path=/var/log
# 在控制檯輸出的日誌的格式
logging.pattern.concole=%d{yyyy-MM-dd}
# 指定文件中輸出日誌的格式
logging.pattern.file=
# 日誌輸出格式
# %d 表示日期時間
# %-5level 級別從左顯示5個字符寬度
# %logger{50} 表示logger名字最長50個字符,否則按照據點分割
# %msg 日誌消息
# %n 換行符

5. 切換日誌框架

如果由logback切換爲log4j,首先將相關的jar包和中間包替換掉

日誌的配置文件修改,採用log4j的配置名字

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