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

SpringBoot整合logback日志的詳細(xì)步驟

 更新時(shí)間:2023年05月25日 15:47:58   作者:鶴沖天Pro  
這篇文章主要介紹了SpringBoot整合logback日志的詳細(xì)步驟,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、概述

與log4j相比:

實(shí)際上,這兩個(gè)日志框架都出自同一個(gè)開發(fā)者之手,Logback 相對(duì)于 Log4J 有更多的優(yōu)點(diǎn)

(1)logback不僅性能提升了,初始化內(nèi)存加載也更小了。

(2)內(nèi)容更豐富的文檔

(3)更強(qiáng)大的過濾器

二、步驟

1、maven配置jar包

logback默認(rèn)就在spring-boot-starter-web包中,所以我們只要有spring-boot-starter-web

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

2、新建logback-spring.xml

springboot官方建議命名為logback-spring.xml,在src/main/resources新建logback-spring.xml,這里不需要在application.properties中配置

默認(rèn)加載加載配置順序 logback-spring.xml, logback-spring.groovy, logback.xml, or logback.groovy

<?xml version="1.0" encoding="UTF-8" ?>
<configuration> 
        <!--    打印到控制臺(tái) -->
     <appender name="consoleApp" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>
                %date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
            </pattern>
        </layout>
    </appender>
   <!--   打印到文件 -->
    <appender name="fileInfoApp" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
             <level>ERROR</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
        <encoder>
            <pattern>
                %date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
            </pattern>
        </encoder>
        <!-- 滾動(dòng)策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 路徑 -->
            <fileNamePattern>app_log/log/app.info.%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>
    <!--  打印到文件 -->
    <appender name="fileErrorApp" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <encoder>
            <pattern>
                %date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
            </pattern>
        </encoder>
        <!-- 設(shè)置滾動(dòng)策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 路徑,因?yàn)橛?%d所以每天都會(huì)意時(shí)間來創(chuàng)建新的文件 -->
            <fileNamePattern>app_log/log/app.err.%d.log</fileNamePattern>
            <!-- 控制保留的歸檔文件的最大數(shù)量,超出數(shù)量就刪除舊文件,假設(shè)設(shè)置每個(gè)月滾動(dòng),
            且<maxHistory> 是1,則只保存最近1個(gè)月的文件,刪除之前的舊文件 -->
             <MaxHistory>1</MaxHistory>
          <!--   保持30天的歷史記錄上限為3GB總大小 -->
             <totalSizeCap>3GB</totalSizeCap>
        </rollingPolicy>
    </appender>
     <!--這里選擇INFO就代表,進(jìn)行INFO級(jí)別輸出記錄,那么在控制臺(tái)也好,log文件也好只記錄INFO及以上級(jí)別的日志,這里相當(dāng)于第一道過濾器-->    
   <root level="INFO">  
        <appender-ref ref="consoleApp"/>
        <appender-ref ref="fileInfoApp"/>
        <appender-ref ref="fileErrorApp"/>
    </root>
</configuration>

有關(guān)配置文件詳細(xì)介紹放到下面講,這里先跳過

3、controller類

@RestController
@RequestMapping("/api/v1")
public class UserController {
    private Logger logger = LoggerFactory.getLogger(this.getClass());
    @GetMapping("log")
    public Object testLog(){
        logger.debug("---debug---debug---");
        logger.info("---info---信息---");
        logger.warn("---warn ---警告--- ");
        logger.error("---err---錯(cuò)誤---");
        //這也是個(gè)錯(cuò)誤的日志級(jí)別
        int i=1/0;
        return "yes";
    }
}

4、效果:

我們發(fā)現(xiàn),在項(xiàng)目中自動(dòng)創(chuàng)建app_log/log/app.info(當(dāng)天日期).log和app.err(當(dāng)天日期).log文件

然后我們看

它只存放err級(jí)別日志

它只存放的info和warn兩種基本日志,這是為什么呢?詳細(xì)介紹下配置文件

三、配置文件介紹

1、根節(jié)點(diǎn)

它的三個(gè)子節(jié)點(diǎn)
(1) 格式化日志輸出節(jié)點(diǎn),有兩個(gè)必要屬性name和class。
(2) 用來設(shè)置某一個(gè)包或具體的某一個(gè)類的日志打印級(jí)別、以及指定。
(3)(要加在最后)(必選,而且只有一個(gè))(用來指定最基礎(chǔ)的日志輸出級(jí)別,他有倆個(gè)自己點(diǎn)可以用來應(yīng)用appender,格式化日志輸出)

2、appender節(jié)點(diǎn)

它有兩個(gè)屬性name和class
(1) class="ch.qos.logback.core.ConsoleAppender":把日志輸出到
(2)class="ch.qos.logback.core.FileAppender":把日志添加到文件
  (3)class="ch.qos.logback.core.rolling.RollingFileAppender":滾動(dòng)記錄文件,先將日志文件指定到文件,當(dāng)符合某個(gè)條件時(shí),將日志記錄到其他文件

所以上面第一個(gè)appender代表輸出到控制臺(tái),同時(shí)并沒有進(jìn)行任何過濾,所以只要是INFO級(jí)別以上的都會(huì)在控制臺(tái)輸出。

四、filter過濾器

其它的一看就懂,就這里,一開始一直想不明白,為什么上面的info文件里只有info和warn,而err文件中只有err日志。后來明白了。

他有幾個(gè)常用的過濾器

(1)LevelFilter 過濾器
級(jí)別過濾器,根據(jù)日志級(jí)別進(jìn)行過濾。如果日志級(jí)別等于配置級(jí)別,過濾器會(huì)根據(jù)onMath 和 onMismatch接收或拒絕日志。

  <filter class="ch.qos.logback.classic.filter.LevelFilter">
             <level>ERROR</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
  </filter>

< level>:設(shè)置過濾級(jí)別

將過濾器的日志級(jí)別配置為ERROR,所有ERROR級(jí)別的日志交給appender處理,非ERROR級(jí)別的日志,被過濾掉。

(這樣的話那上面不是只顯示ERROR日志,怎么最后顯示的是INFO和WARN日志呢?看下面)

< onMatch>: 用于配置符合過濾條件的操作

< onMismatch>:用于配置不符合過濾條件的操作

再看有這么幾個(gè)單詞DENY(拒絕),NEUTRAL(中性),ACCEPT(接受)

(1)返回DENY,日志將立即被拋棄不再經(jīng)過其他過濾器;
(2)返回NEUTRAL,有序列表里的下個(gè)過濾器過接著處理日志;
(3)返回ACCEPT,日志會(huì)被立即處理,不再經(jīng)過剩余過濾器

在理解下:

<level>ERROR</level>         <!-- 所有ERROR級(jí)別的日志交給appender處理,非ERROR級(jí)別的日志,被過濾掉 -->
<onMatch>DENY</onMatch>      <!-- 代表符合過濾條件的拒絕輸出 -->
<onMismatch>ACCEPT</onMismatch>   <!-- 不符合過濾條件的接受輸出 -->  

我靠,這么繞一圈不還是表示非ERROR級(jí)別的輸出嘛,DEBUG除外,因?yàn)镈UBUG在root標(biāo)簽,已經(jīng)過濾掉,都不會(huì)走到appender標(biāo)簽這里

(2)ThresholdFilter 過濾器
臨界值過濾器,過濾掉低于指定臨界值的日志。當(dāng)日志級(jí)別等于或高于臨界值時(shí),過濾器返回NEUTRAL;當(dāng)日志級(jí)別低于臨界值時(shí),日志會(huì)被拒絕。

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

這里只會(huì)訪問ERROR及以上級(jí)別的過濾器,而ERROR已經(jīng)是最高級(jí)了,所以就只顯示ERROR日志在errer文件中了,所以一切都通了。

到此這篇關(guān)于SpringBoot整合logback日志的文章就介紹到這了,更多相關(guān)SpringBoot整合logback內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java掃描文件夾下所有文件名

    Java掃描文件夾下所有文件名

    這篇文章主要為大家詳細(xì)介紹了Java掃描文件夾下所有文件名,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • JAVA中的SPI思想介紹

    JAVA中的SPI思想介紹

    大家好,本篇文章主要講的是JAVA中的SPI思想介紹,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • Java多線程之Semaphore實(shí)現(xiàn)信號(hào)燈

    Java多線程之Semaphore實(shí)現(xiàn)信號(hào)燈

    這篇文章主要給大家分享的是Java多線程之Semaphore實(shí)現(xiàn)信號(hào)燈的練習(xí),emaphore是計(jì)數(shù)信號(hào)量。Semaphore管理一系列許可證。每個(gè)acquire方法阻塞,直到有一個(gè)許可證可以獲得然后拿走一個(gè)許可證;下面一起進(jìn)入文章學(xué)習(xí)Semaphore的具體內(nèi)容
    2021-10-10
  • SpringBoot中@GetMapping注解的使用

    SpringBoot中@GetMapping注解的使用

    @GetMapping注解是Spring Boot中最常用的注解之一,它可以幫助開發(fā)者定義和處理HTTP GET請(qǐng)求,本文就來介紹一下SpringBoot中@GetMapping注解的使用,感興趣的可以了解一下
    2023-10-10
  • java實(shí)現(xiàn)簡(jiǎn)易版圖形界面計(jì)算器

    java實(shí)現(xiàn)簡(jiǎn)易版圖形界面計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)易版圖形界面計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • java實(shí)現(xiàn)漢字轉(zhuǎn)unicode與漢字轉(zhuǎn)16進(jìn)制實(shí)例

    java實(shí)現(xiàn)漢字轉(zhuǎn)unicode與漢字轉(zhuǎn)16進(jìn)制實(shí)例

    這篇文章主要介紹了java實(shí)現(xiàn)漢字轉(zhuǎn)unicode與漢字轉(zhuǎn)16進(jìn)制的實(shí)現(xiàn)方法,是Java操作漢字編碼轉(zhuǎn)換的一個(gè)典型應(yīng)用,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-10-10
  • Java中對(duì)象的序列化方式克隆詳解

    Java中對(duì)象的序列化方式克隆詳解

    在學(xué)習(xí)編程的過程中,我覺得不止要獲得課本的知識(shí),更多的是通過學(xué)習(xí)技術(shù)知識(shí)提高解決問題的能力,這樣我們才能走在最前方。這篇文章主要給大家介紹了Java中對(duì)象的序列化方式克隆,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • Java中的==使用方法詳解

    Java中的==使用方法詳解

    這篇文章主要給大家介紹了關(guān)于Java中的==使用方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • Java序列化(Serialization) 機(jī)制

    Java序列化(Serialization) 機(jī)制

    本篇文章是對(duì)Java中對(duì)象的序列化(Serialization) 機(jī)制進(jìn)行了詳細(xì)的分析介紹,并附實(shí)例,需要的朋友可以參考下
    2016-07-07
  • java基本教程之Thread中start()和run()的區(qū)別 java多線程教程

    java基本教程之Thread中start()和run()的區(qū)別 java多線程教程

    這篇文章主要介紹了Thread中start()和run()的區(qū)別,Thread類包含start()和run()方法,它們的區(qū)別是什么?下面將對(duì)此作出解答
    2014-01-01

最新評(píng)論