SpringBoot-04- SpringBoot日誌(SLF4j+Logback)

市面上雖然有很多日誌處理機制,但是SLF4j+Logback其功能強大、使用簡便的優勢,受到越來越多的開發者青睞。
而且SpringBoot底層默認使用的是SLF4j+Logback日誌,它會自動依賴這兩個包,不需要我們配置。

我們在此也介紹這種組合方式開發。

1、pom文件中導入對應的依賴包

tips:如果創建的是web項目,需要導入;如果創建的直接是springbootweb項目,就不需要導入了。

<!-- slf4j -->
 <dependency>
	 <groupId>org.slf4j</groupId>
	 <artifactId>slf4j-api</artifactId>
	 <version>1.7.26</version>
</dependency>
 
<!-- logback -->
<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>1.2.3</version>
</dependency>

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.2.3</version>
</dependency>

如果是SpringBootweb項目的話不用導入上述依賴,SpringBoot的底層已經依賴好了,見下圖:

2、logback.xml文件配置

logback.xml: 直接被日誌框架識別。

<?xml version="1.0" encoding="UTF-8"?>
<!-- logback配置
    1. 生產環境禁止輸出日誌到控制檯
       註釋 <appender-ref ref="STDOUT" /> 即可
    2. 配置包日誌
       配置logger標籤即可,name字段爲包全路徑,lever可控制日誌等級
    3. 生產環境下不停機更新日誌配置
       scanPeriod:設置監測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認單位是毫秒。當scan爲true時,此屬性生效
-->
<configuration scan="true" scanPeriod="60000">
 
    <!-- Basic log dir, name config -->
    <!-- 此處的這個路徑配置自己創建的-->
    <property name="baseDir" value="D:/logs/JavaDemo"/>
    <property name="demoClassDir" value="demoClass"/>
 
    <!-- DemoClass log -->
    <appender name="DEMO" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${baseDir}/${demoClassDir}.log</file>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <charset>UTF-8</charset>
            <Pattern>%d{yyyy-MM-dd HH:mm:ss z} [%thread] %-5level %logger{5} %M:%L - %msg%n</Pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${baseDir}/${demoClassDir}/%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--只保留最近90天的日誌-->
<!--            <maxHistory>90</maxHistory>-->
            <!--用來指定日誌文件的上限大小,那麼到了這個值,就會刪除舊的日誌-->
<!--            <totalSizeCap>1GB</totalSizeCap>-->
        </rollingPolicy>
    </appender>
 
    <!-- 控制檯輸出 不需要修改 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <charset>UTF-8</charset>
            <Pattern>%d{yyyy-MM-dd HH:mm:ss z} [%thread] %-5level %logger{5} %M:%L - %msg%n</Pattern>
        </encoder>
    </appender>
 
    <logger name="com.spz.demo.java" level="INFO" additivity="true">
        <appender-ref ref="DEMO" />
    </logger>
 
    <root level="DEBUG">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

3、官方用例

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

4、日誌的使用

1、默認配置

SpringBoot默認幫我們配置好了日誌:

//記錄器
    Logger logger = LoggerFactory.getLogger(getClass());
    @Test
    void contextLoads() {

        //日誌的級別:  由低到高 trace<debug<info<warn<error
        //可以調整輸出的日誌級別:日誌只會在這個級別及以後的高級別生效
       logger.trace("這是tract日誌.....");
       logger.debug("這是debugger日誌.....");
       //springboot默認給我們的使用是info級別,沒有指定級別的就用springboot默認級別
       logger.info("這是info日誌.....");
       logger.warn("這是warn日誌....");
       logger.error("這是error日誌....");
    }

日誌輸出格式:

logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%

%d 表示日期時間
%thread 表示線程名
%-5level 表示從左顯示5個字符寬度
%logger{50} 表示logger名字最長50個字符,否則按照句點分割
%msg   表示日誌消息
%n  表示換行符

實例: 可以自己設置一些輸出格式!

logging.level.com.dongxk = trace

#當前項目下生成springboot.Log日誌
#logging.file.name = xxxx
# /表示當前磁盤的根路徑
# /spring/log表示在當前磁盤根路徑下創建spring文件夾和裏面的log文件夾,使用spring.log作爲默認文件
logging.file.path= /spring/log

# 在控制檯輸出的日誌格式
logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n
# 指定文件中的日誌輸出格式
logging.pattern.file=%d{yyyy-MM-dd} === [%thread] %-5level %logger{50} - %msg%n
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章