欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot項(xiàng)目配置logback日志系統(tǒng)的實(shí)現(xiàn)

 更新時(shí)間:2021年04月20日 11:08:17   作者:蒲公英不是夢(mèng)  
這篇文章主要介紹了springboot項(xiàng)目配置logback日志系統(tǒng)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

記錄springboot項(xiàng)目配置logback日志文件管理:

logback依賴jar包

SpringBoot項(xiàng)目配置logback理論上需要添加logback-classic依賴jar包:

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

但是因?yàn)?code>SpringBoot項(xiàng)目默認(rèn)就是使用的就是logback日志系統(tǒng),創(chuàng)建SpringBoot項(xiàng)目時(shí)引入的spring-boot-starter或者spring-boot-starter-web依賴jar包中已經(jīng)包含了spring-boot-starter-logging的依賴,里面同時(shí)包含多種日志系統(tǒng)依賴,如下圖所示:

包括logback和log4j,所以,無(wú)需額外添加依賴,直接配置logback.xml就可以了。

此外,如果需要切換為log4j2,那么需要在spring-boot-starter-web依賴中排除springboot自帶的commons‐logging,然后在引入log4j2的依賴jar包,如下所示:

<!--排除 commons‐logging-->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
   <exclusions>
      <exclusion>
      <groupId>commons‐logging</groupId>
      <artifactId>commons‐logging</artifactId>
      </exclusion>
   </exclusions>
</dependency>

<!--引入log4j2 -->
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

logback的默認(rèn)配置

前面說(shuō)到SpringBoot項(xiàng)目默認(rèn)使用logback,那么對(duì)于logback的配置情況,SpringBoot又是如何定義的呢?

首先,SpringBoot會(huì)從resource包下查找logback-test.xmllogback.xml ,如果這兩個(gè)都不存在,則會(huì)調(diào)用BasicConfigurator,創(chuàng)建一個(gè)最小化的基本配置。

最小化配置由一個(gè)關(guān)聯(lián)到根loggerConsoleAppender組成,默認(rèn)輸出模式為%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n,root logger級(jí)別為DEBUG,所以并不會(huì)生成日志文件,只會(huì)輸出到控制臺(tái)。

創(chuàng)建logback.xml配置文件

通過(guò)自定義logback.xml配置文件來(lái)控制日志輸出情況,通常我們會(huì)配置三個(gè)日志組件:

  • 控制臺(tái)輸出
  • 輸出info級(jí)別日志文件
  • 輸出error級(jí)別日志文件

以下為logback.xml完整配置

<!-- Logback configuration. See http://logback.qos.ch/manual/index.html -->
<configuration scan="true" scanPeriod="2 seconds">
    <!--定義日志文件的存儲(chǔ)地址-->
    <property name="LOG_PATH" value="./logs" />
    <!-- 控制臺(tái)輸出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化輸出:%d表示日期,%-5level:級(jí)別從左顯示5個(gè)字符寬度,%t表示線程名,%msg:日志消息,%n是換行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} --- [%t] %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- info級(jí)別日志文件輸出 -->
    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件輸出的文件名 -->
        <File>${LOG_PATH}/info.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- 每日生成日志文件或日志文件大小超出限制后輸出的文件名模板 -->
            <fileNamePattern>${LOG_PATH}/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 日志文件保留天數(shù) -->
            <maxHistory>30</maxHistory>
            <!-- 日志文件最大大?。?00MB -->
            <maxFileSize>100MB</maxFileSize>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} --- [%t] %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- error級(jí)別日志文件輸出 -->
    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志輸出級(jí)別,優(yōu)先級(jí) > '<root level>' -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <File>${LOG_PATH}/error.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxHistory>30</maxHistory>
            <maxFileSize>100MB</maxFileSize>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} --- [%t] %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 默認(rèn)日志輸出級(jí)別 -->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="INFO_FILE" />
        <appender-ref ref="ERROR_FILE" />
    </root>

</configuration>

logback配置說(shuō)明

根節(jié)點(diǎn)configuration

<configuration scan="true" scanPeriod="2 seconds" debug="false">
    
</configuration>

configuration包含以下三個(gè)屬性:

  • scan:配置文件發(fā)生更改時(shí),進(jìn)行重載,默認(rèn)值為true
  • scanPeriod:監(jiān)測(cè)配置文件是否有修改的時(shí)間間隔,默認(rèn)值為6000,默認(rèn)單位為毫秒
  • debug:打印logback內(nèi)部日志信息,實(shí)時(shí)查看logback運(yùn)行狀態(tài),默認(rèn)值為false

子節(jié)點(diǎn)property:

<property name="LOG_PATH" value="./logs" />

用來(lái)定義變量值,包含以下兩個(gè)屬性

  • name:變量名稱
  • value:變量定義的值

通過(guò)property定義的值會(huì)被插入到logger上下文中,可以使${}來(lái)使用變量,這里定義了log的保存位置根目錄。

子節(jié)點(diǎn)appender:

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

</appender>

是負(fù)責(zé)寫(xiě)日志的組件,通過(guò)自定義日志組件控制日志輸出的情況,包含以下兩個(gè)屬性:

  • name:組件名稱
  • class:組件class指定的類名

不同的class,對(duì)應(yīng)不同的功能:

ch.qos.logback.core.ConsoleAppender會(huì)把日志輸出到控制臺(tái)

ch.qos.logback.core.rolling.RollingFileAppender把日志內(nèi)容輸出到指定文件

File節(jié)點(diǎn):日志文件輸出的文件名

<File>${LOG_PATH}/info.log</File>

filter節(jié)點(diǎn):過(guò)濾器,用來(lái)指定日志組件的日志輸出級(jí)別,優(yōu)先級(jí)高于root節(jié)點(diǎn)的level。

<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
    <level>ERROR</level>
</filter>

rollingPolicy節(jié)點(diǎn):

滾動(dòng)日志文件配置,涉及日志文件的移動(dòng)和重命名,只有一個(gè)class屬性,用來(lái)指定滾動(dòng)策略,這里使用的是ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy

包含以下三個(gè)屬性:

  • fileNamePattern:發(fā)生滾動(dòng)時(shí)的日志命名方式
  • maxHistory:日志文件的最大保留時(shí)間,超過(guò)設(shè)定時(shí)間后會(huì)自動(dòng)刪除
  • maxFileSize:每份日志文件的最大限制,超出限制后會(huì)重新生成,并將舊的日志文件按照f(shuō)ileNamePattern設(shè)定的日志命名方式進(jìn)行命名
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    <fileNamePattern>${LOG_PATH}/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
    <maxHistory>30</maxHistory>
    <maxFileSize>100MB</maxFileSize>
</rollingPolicy>

子節(jié)點(diǎn)encoder

<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
     <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} --- [%t] %logger{50} - %msg%n</pattern>
</encoder>

對(duì)記錄事件進(jìn)行格式化,負(fù)責(zé)兩件事,一是把日志信息轉(zhuǎn)換成字節(jié)數(shù)組,二是把字節(jié)數(shù)組寫(xiě)入到輸出流。
PatternLayoutEncoder 是唯一有用的且默認(rèn)的encoder ,有一個(gè) 節(jié)點(diǎn),用來(lái)設(shè)置日志的輸入格式。使用“%”加“轉(zhuǎn)換符”方式,如果要輸出“%”,則必須用“\”對(duì)“%”進(jìn)行轉(zhuǎn)義。

子節(jié)點(diǎn)root

loger,是所有loger的最上級(jí),且只有一個(gè)level節(jié)點(diǎn),用類設(shè)置打印日志的級(jí)別,默認(rèn)值為debug,通常設(shè)置為info,此外還有trace、warn、error、all、off級(jí)別。
子節(jié)點(diǎn)appender-ref的ref屬性指定日志組件名稱,即appendername屬性值。

使用logback

yml文件中增加logging.config指定配置文件地址,命名為logback時(shí)可以不需要配置,SpringBoot`會(huì)自動(dòng)查找。

level設(shè)置指定路徑下的日志輸出級(jí)別。

logging:
  config: classpath:logback.xml
  level:
    com:
      springboot: debug

如圖所示,項(xiàng)目啟動(dòng)后,訪問(wèn)接口輸出日志內(nèi)容并生成指定日志文件:

內(nèi)容參考

博客園-ryelqy-logback的使用和logback.xml詳解

到此這篇關(guān)于springboot項(xiàng)目配置logback日志系統(tǒng)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)springboot配置logback日志系統(tǒng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用Java自寫(xiě)一個(gè)生成ID的工具類

    利用Java自寫(xiě)一個(gè)生成ID的工具類

    平時(shí)項(xiàng)目中只要涉及表,那么一定能接觸到眾多各式各樣的ID編號(hào)。本文將通過(guò)Java語(yǔ)言實(shí)現(xiàn)手寫(xiě)一個(gè)ID生成工具類,需要的小伙伴可以參考一下
    2022-11-11
  • Java?WebService開(kāi)源框架CXF詳解

    Java?WebService開(kāi)源框架CXF詳解

    本文詳細(xì)講解了Java?WebService開(kāi)源框架CXF,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • Java自帶消息隊(duì)列Queue的使用教程詳細(xì)講解

    Java自帶消息隊(duì)列Queue的使用教程詳細(xì)講解

    這篇文章主要介紹了Java自帶消息隊(duì)列Queue的使用教程,Java中的queue類是隊(duì)列數(shù)據(jù)結(jié)構(gòu)管理類,在它里邊的元素可以按照添加它們的相同順序被移除,隊(duì)列通常以FIFO的方式排序各個(gè)元素,感興趣想要詳細(xì)了解可以參考下文
    2023-05-05
  • IDEA2020.3創(chuàng)建web工程的完整步驟

    IDEA2020.3創(chuàng)建web工程的完整步驟

    這篇文章主要給大家介紹了關(guān)于IDEA2020.3創(chuàng)建web工程的完整步驟,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 詳解Java CompletableFuture使用方法以及與FutureTask的區(qū)別

    詳解Java CompletableFuture使用方法以及與FutureTask的區(qū)別

    CompletableFuture實(shí)現(xiàn)了CompletionStage接口和Future接口,前者是對(duì)后者的一個(gè)擴(kuò)展,增加了異步回調(diào)、流式處理、多個(gè)Future組合處理的能力,使Java在處理多任務(wù)的協(xié)同工作時(shí)更加順暢便利
    2021-10-10
  • Java處理日期時(shí)間的方法匯總

    Java處理日期時(shí)間的方法匯總

    這篇文章主要給大家介紹了利用Java中的Calendar 類處理日期時(shí)間的方法匯總,其中包括取日期的每部分、取當(dāng)月的第一天或最后一天、求兩個(gè)日期之間相隔的天數(shù)以及一年前的日期等等的示例代碼,有需要的朋友們可以直接參考借鑒,下面來(lái)一起看看吧。
    2016-12-12
  • SpringCloud整合Nacos實(shí)現(xiàn)流程詳解

    SpringCloud整合Nacos實(shí)現(xiàn)流程詳解

    這篇文章主要介紹了SpringCloud整合Nacos實(shí)現(xiàn)流程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Java實(shí)現(xiàn)動(dòng)態(tài)生成GIF圖像詳解

    Java實(shí)現(xiàn)動(dòng)態(tài)生成GIF圖像詳解

    在互聯(lián)網(wǎng)上有許多有趣的場(chǎng)景,其中的一種就是動(dòng)圖。這不是視頻,而是一種GIF圖像信息。本文將利用Java實(shí)現(xiàn)動(dòng)態(tài)生成GIF圖像功能,需要的可以參考一下
    2022-09-09
  • Java排序算法之桶排序詳解

    Java排序算法之桶排序詳解

    這篇文章主要介紹了Java排序算法之桶排序詳解,桶排序是將數(shù)組中的元素放到一個(gè)一個(gè)的桶中,每個(gè)桶(bucket)代表一個(gè)區(qū)間,里面可以承載一個(gè)或者多個(gè)元素,然后將桶內(nèi)的元素進(jìn)行排序,再按順序遍歷桶,輸出桶內(nèi)元素,需要的朋友可以參考下
    2023-10-10
  • Spring?Boot?利用?XML?方式整合?MyBatis

    Spring?Boot?利用?XML?方式整合?MyBatis

    這篇文章主要介紹了Spring?Boot?利用?XML?方式整合?MyBatis,文章圍繞主題的相關(guān)資料展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,組要的小伙伴可以參考一下
    2022-05-05

最新評(píng)論