1. 程式人生 > >springboot2.x簡單詳細教程--整合Logback日誌框架(第十一章)

springboot2.x簡單詳細教程--整合Logback日誌框架(第十一章)

一、新日誌框架LogBack介紹


    簡介:日誌介紹和新日誌框架Logback講解

    1.常用處理java的日誌元件 slf4j,log4j,logback,common-logging 等
    
    2、logback介紹:基於Log4j基礎上大量改良,不能單獨使用,推薦配合日誌框架SLF4J來使用
        logback當前分成三個模組:logback-core,logback-classic和logback-access;
        logback-core
是其它兩個模組的基礎模組

  注意日誌框架影響QPS比較大,選擇前應該進行測試,慎重選擇。

 3、Logback的核心物件:
        Logger:日誌記錄器
        Appender:指定日誌輸出的目的地,目的地可以是控制檯,檔案(springboot預設輸出到控制檯
        Layout:日誌佈局 格式化日誌資訊的輸出

        
    4、日誌級別:DEBUG < INFO < WARN
< ERROR

      一般使用INFO 和WARN即可

 ===========log4j示例===========        
         ### 設定###
        log4j.rootLogger = debug,stdout,D,E

        ### 輸出資訊到控制擡 ###
參考log4j文件寫
        log4j.appender.stdout = org.apache.log4j.ConsoleAppender
        log4j.appender.stdout.Target = System.out
        log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
        log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

        ### 輸出DEBUG 級別以上的日誌到=D://logs/error.log ###
        log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
        log4j.appender.D.File = D://logs/log.log
        log4j.appender.D.Append = true
        log4j.appender.D.Threshold = DEBUG 
        log4j.appender.D.layout = org.apache.log4j.PatternLayout
        log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

        ### 輸出ERROR 級別以上的日誌到=D://logs/error.log ###
        log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
        log4j.appender.E.File =E://logs/error.log 
        log4j.appender.E.Append = true
        log4j.appender.E.Threshold = ERROR 
        log4j.appender.E.layout = org.apache.log4j.PatternLayout
        log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n 

        ===========logback============
    
    4、Log4j日誌轉換為logback線上工具支援log4j.properties轉換為logback.xml,不支援 log4j.xml轉換為logback.xml
     https://logback.qos.ch/translator/

1)轉化工具

2)將以上的log4j日誌複製進來轉成logback.xml

3)檢視結果

 

 

二、SpringBoot2.x日誌講解和自定義Logback配置實戰


    簡介:講解SpringBoot2.x整合Logback配置實戰

        1、官網介紹:https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-logging

1)官方資料

2)日誌佈局

3)DEBUG級日誌輸出可以用jar包啟動

 

           各個元件案例:https://logback.qos.ch/manual/index.html
        
        2、分析SpringBoot啟動日誌
            1)預設情況下,Spring Boot將日誌輸出到控制檯

        三、整合Logback實戰


            1.在src/main/resources下建立 日誌檔案logback-spring.xml,官方推薦 -spring.xml結尾

                 logback-spring.xml裡面的內容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>

     <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>
        <!-- 滾動策略 -->
        <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>
        
        <!-- 設定滾動策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 路徑 -->
            <fileNamePattern>app_log/log/app.err.%d.log</fileNamePattern>
            
            <!-- 控制保留的歸檔檔案的最大數量,超出數量就刪除舊檔案,假設設定每個月滾動,
            且<maxHistory> 是1,則只儲存最近1個月的檔案,刪除之前的舊檔案 -->
             <MaxHistory>1</MaxHistory>
            
        </rollingPolicy>
    </appender>
   <root level="INFO">  
        <appender-ref ref="consoleApp"/>
        <appender-ref ref="fileInfoApp"/>
        <appender-ref ref="fileErrorApp"/>
    </root>
</configuration>

 logback-spring.xml檔案分析

1)整體結構

2)單個佈局

  各個元件案例:https://logback.qos.ch/manual/index.html 

a)

3)filleInfoApp

4)fileErrorApp

 2.cotroller

2)啟動訪問

3)檢視控制檯

注意:root放在logback-spring.xml的最後面,放前面會出問題

4)重新整理工程出現如下圖的log檔案

5)

6)logback-spring.xml已經過濾掉Error級別的了

7)擴充套件:改為debug會怎麼樣呢? 將生成的log檔案先刪除

8)

9)

  總結:

1.開發中一般用Info級別,debug無用資訊太多,佔用磁碟

 2.  預設載入載入配置順序 logback-spring.xml, logback-spring.groovy, logback.xml, or logback.groovy
            
 3. 註釋:
                <configuration> 子節點
                <appender></appender>                       
                <logger></logger>
                <root></root>(要加在最後)