首頁  >  文章  >  Java  >  springboot logback日誌框架怎麼配置

springboot logback日誌框架怎麼配置

WBOY
WBOY轉載
2023-05-11 10:46:191058瀏覽

logback既可以透過application設定檔進行日誌的配置,又可以透過logback-spring.xml進行日誌的設定。通常情況下,使用全域設定檔application.yml或properties進行設定就足夠了,如果您的日誌輸出需求特別複雜且需求比較個人化,可以考慮使用logback-spring.xml的設定方式。

一、application設定檔實作日誌配置

我們可以在applicaition.properties(yml) 檔案中進行日誌的設定

logging:
  level:
    root: info
    com.zimug.boot.launch.controller: debug
  file:
    path: D:\logs
    name: D:\logs\boot-launch.log
    max-size: 10MB
    max-history: 10
  pattern:
    console: '%red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{10}) - %cyan(%msg%n)'
    file: '%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger : %msg%n'
  • #logging.level.root=info指定整個系統的預設日誌等級是info,日誌等級統一化

  • logging.level.com.zimug.boot. launch.controller=debug,指定某個特定的package的日誌等級是debug,日誌等級個人化。優先權角度,個性配置大於統一配置。

  • logging.file.path將日誌輸出到指定目錄,如果不指定

  • logging. file.name,日誌檔案的預設名稱是spring.log。配置了logging.file.name之後,logging.file.path設定失效。

  • 無論何種設置,Spring Boot都會自動按天分割日誌文件,也就是說每天都會自動產生一個新的log文件,而之前的會自動打成GZ壓縮包。 # 日誌檔案大小

  • 可以設定logging.file.max-size=10MB分割的每個日誌的檔案最大容量,超過這個size之後日誌繼續分隔。

  • 可以設定保留的日誌時間logging.file.max-history=10,以天為單位

  • logging.pattern.file輸出到檔案中的日誌的格式

  • #logging.pattern.console控制台輸出日誌的格式,為了在控制台調試時候顯示效果更清晰,為日誌增加了顏色。 red、green等等

日誌格式佔位符

配合這張圖,看看佔位符和logging.pattern.console格式配置之間的關係

springboot logback日志框架怎么配置

  • %d{HH:mm:ss.SSS}:日誌輸出時間(red)

  • %thread:輸出日誌的進程名字,這在Web應用以及非同步任務處理中很有用(green)

  • %-5level:日誌級別,並且使用5個字元靠左對齊(highlight高亮藍色)

  • %logger:日誌輸出類別的名字(boldMagenta粗體洋紅色)

  • %msg:日誌訊息(cyan藍綠色)

  • %n:平台的換行符號

二、使用logback-spring .xml實作日誌設定

2.1.需求

一般情況下,使用全域設定檔application.yml或properties進行設定就足夠了,如果您的日誌輸出需求特別複雜,可以考慮使用logback-spring.xml的設定方式。

spring boot 用自帶的logback打印日誌,多環​​境打印:

  • 生產環境輸出到控制台和文件,一天一個文件,保留30天.

  • 開發環境輸出到控制台和打印sql(mybatis)輸出,生產環境不打印這個信息

  • ##測試環境只輸出到控制台。不輸出到檔案

列印Mybatis SQL,只要把使用到Mybatis的package的日誌等級調整為DEBUG,就可以將SQL列印出來。

2.2.需求實作

因為logback是spring boot的預設日誌框架,所以不需要引入maven依賴,直接上logback-spring.xml放在resources下面

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--引入默认的一些设置-->
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <!--web信息-->
    <logger name="org.springframework.web" level="info"/>
    <!--写入日志到控制台的appender,用默认的,但是要去掉charset,否则windows下tomcat下乱码-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>
    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
    <property name="LOG_PATH" value="D:/logs/boot-launch"/>
    <!--写入日志到文件的appender-->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名,每天一个文件-->
            <FileNamePattern>${LOG_PATH}.%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--日志文件保留天数-->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>
    <!--异步写日志到文件-->
    <appender name="asyncFileAppender" class="ch.qos.logback.classic.AsyncAppender">
        <discardingThreshold>0</discardingThreshold>
        <queueSize>500</queueSize>
        <appender-ref ref="FILE"/>
    </appender>
    <!--生产环境:打印控制台和输出到文件-->
    <springProfile name="prod">
        <root level="info">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="asyncFileAppender"/>
        </root>
    </springProfile>
    <!--开发环境:打印控制台-->
    <springProfile name="dev">
        <!-- 打印sql -->
        <logger name="com.zimug.boot.launch" level="DEBUG"/>
        <root level="DEBUG">
            <appender-ref ref="CONSOLE"/>
        </root>
    </springProfile>
    <!--测试环境:打印控制台-->
    <springProfile name="test">
        <root level="info">
            <appender-ref ref="CONSOLE"/>
        </root>
    </springProfile>
</configuration>

非同步日誌配置:

  • 非同步日誌queueSize 預設值256,非同步日誌佇列的容量。

  • discardingThreshold:當非同步日誌佇列的剩餘容量小於這個閾值,會丟棄TRACE, DEBUG or INFO等級的日誌。如果不希望丟棄日誌(即全量保存),則可以設定為0。但是當佇列佔滿後,非阻塞的非同步日誌會變成阻塞的同步日誌。所以在高並發低延遲要求的系統裡面針對不重要的日誌可以設定discardingThreshold丟棄策略,值大於0。

2.3.測試一下

上面設定完成之後,可以使用如下程式碼測試一下,是否滿足了2.1節中提出的需求。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@RestController
public class LogTestController {
    private static final Logger logger = LoggerFactory.getLogger(LogTestController.class);
    @GetMapping("/testlog")
    public void test(){
        logger.trace("Trace 日志...");
        logger.debug("Debug 日志...");
        logger.info("Info 日志...");
        logger.warn("Warn 日志...");
        logger.error("Error 日志...");
    }
}

以上是springboot logback日誌框架怎麼配置的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除