LogBack.xml文件配置


Logback-spring.xml配置文件 

1、日志級別:日志級別從低到高分為TRACE < DEBUG < INFO < WARN < ERROR < FATAL,例如:如果設置為WARN,則低於WARN的信息都不會輸出

2、根節點:configuration

  configuration 有三個可選屬性:

    a、scan屬性:用來設置配置文件變動時是否重新加載,值是true\false,默認是true即配置變動時重新加載

    b、scanperiod屬性:用來設置每隔多久檢查一次配置是否變動,默認是1分鍾,默認單位是毫秒

    c、debug屬性:用來設置是否將logback內部的日志打印出來,即啟動時輸出配置加載信息。值為true\false 默認為false

3、property節點:

  設置要使用的或者共用的變量,property包含兩個屬性name和value;其中name的值是變量的名稱,value的值是變量所代表的值。

       <property>定義的值可以使用“${變量名}”到logger上下文中。

4、springProperty節點

       該標簽的工作方式類似於Logback的標准<property>標簽。但是,value您無需指定direct,而是指定source屬性的(來自Environment)。

       如果需要將屬性存儲在local范圍之外的其他位置,則可以使用該scope屬性。

       如果需要后備值(如果未在中設置屬性Environment),則可以使用defaultValue屬性。

5.appender節點

      appender節點可以有多個,分別針對不同的包或者類做不同的輸出,

      如果appender輸出到文件時,可以設置append子節點值true/false,是末尾追加日志還是替換日志,值為true時表示追加。

      可以在appender中使用filter節點(過濾器),在此節點內過濾日志級別(使用level節點指定),過濾后會返回一個枚舉值,

      即DENY,NEUTRAL,ACCEPT其中之一:

      A、返回DENY,日志將立即被拋棄不再經過其他過濾器;

      B、返回NEUTRAL,有序列表里的下個過濾器接着處理日志;

      C、返回ACCEPT,日志會被立即處理,不再經過剩余過濾器

   如果需要使用這些值做處理時,需要使用onMatch(level級別或大於level級別的)和onMismatch(級別小於level級別的)

6、logger節點

     用來設置某一個包或者具體的某一個類的日志打印級別、以及指定appender。logger僅有一個name屬性和兩個可選的level、addtivity屬性。

            Name屬性:用來指定受此logger約束的某一個包或者具體的某一個類。

            Level屬性:用來設置打印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR

     如果未設置此屬性,那么當前logger將會繼承上級的級別。

     Addtivity屬性:用來設置是否向上級logger傳遞打印信息。默認是true。

     logger可以包含零個或多個appender-ref元素,標識這個appender將會添加到這個logger

7、root節點

     也是<logger>元素,但是它是根logger。只有一個level屬性,因為已經被命名為"root".

          level:用來設置打印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR。默認是DEBUG。

     root可以包含零個或多個appender-ref元素,標識這個appender將會添加到這個logger

8、pattern節點定義的輸出模式解釋

          %d{HH:mm:ss.SSS}  當前時間;

          [%thread]  [當前線程名稱]

          %-5level  logger級別

          %logger{36} logger名稱

         -%msg%n  定義的輸出

          %line  輸出日志的行號

          %n  換行

          %date和%d{yyyy-MM-dd HH:mm:ss.SSS}  當前時間包含年月日

          {%C.java:%L}  輸出日志所在的java類、所在行及路徑可以替換[%thread]

9、appender下的filter的常見種類

   在logback中,過濾器可以添加到Appender上。通過添加一個或多個過濾器到Appender,你可以通過任意條件,

           比如:日志內容、MDC內容、時間等等日志的任何部分,過濾日志事件。

級別過濾器

  級別過濾器(LevelFilter)是基於准確匹配日志級別。如果日志級別等於配置的級別,過濾器通過配置中的OnMatch與OnMismatch屬性決定是接受還是拒絕事件。

閥值過濾器

  閥值過濾器(ThresholdFilter)過濾低於指定閥值的事件。當事件中的日志級別大於等於指定閥值時,過濾器的decide方法返回NEUTRAL。然而,拒絕日志級別小於閥值的事件。

 條件過濾器

  條件過濾器(EvaluatorFilter)是一種封裝了EventEvaluator的通過過濾器。像名字代表的,條件過濾器是根據判斷事件是否符合指定條件來分別返回OnMatch與OnMismatch屬性里的值。

注意:EventEvaluator是一個抽象類,通過繼承它,你可以實現你自己的條件邏輯。

附上配置文件模板:

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

<configuration debug="false" scan="false">
    <property name="LOG_ROOT" value="你的日志的根路徑"></property>
    <property name="LOG_PATH" value="日志路徑"/>


    <springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue="你的項目名"/>
    <property name="log.path" value="${LOG_ROOT}/${LOG_PATH}/${spring.application.name}"/>
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{MM-dd HH:mm:ss.SSS} %-5level [%logger{50}] - %msg%n</pattern>
        </encoder>
    </appender>

<!-- Log file error output -->
    <!-- 每天生成日志文件,文件大小超過20則新生成一個文件,
    同時將舊文件按${LOG_HOME}/logs/error.%d{yyyy-MM-dd}.%i.log格式保存,文件保存30天 -->
    <appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在記錄的日志文檔的路徑及文檔名 -->
        <file>${log.path}/info.log</file><!-- 日志名稱 -->
        <!-- 日志記錄器的滾動策略,按日期,按大小記錄 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
        <!-- 每天日志歸檔路徑以及格式 -->
<fileNamePattern>${log.path}/%d{yyyy-MM}/info.%d{yyyy-MM-dd}.%i.log</fileNamePattern>

<!-- 日志文件過大會使的編輯器打開非常慢,因此設置日志最大20MB -->
               <maxFileSize>20MB</maxFileSize>
               <!--日志文檔保留天數-->
               <maxHistory>30</maxHistory>
               <cleanHistoryOnStart>true</cleanHistoryOnStart>

<!--        <totalSizeCap>10GB</totalSizeCap>  &lt;!&ndash; 總日志大小 &ndash;&gt;-->
        </rollingPolicy>
        <!-- encoder負責兩件事,日志文檔輸出格式,一是把日志信息轉換成字節數組,二是把字節數組寫入到輸出流 -->
        <encoder>
            <pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
        </encoder>
        <!-- 過濾器,可以過濾掉不符合條件的日志,INFO及以上的日志被處理,其它的拒絕 -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>info</level>
        </filter>
    </appender>

    <appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/debug.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/%d{yyyy-MM}/debug.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>20MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
        </rollingPolicy>
        <encoder>
            <pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>debug</level>
        </filter>
    </appender>

    <appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/error.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/%d{yyyy-MM}/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>20MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
        </rollingPolicy>
        <encoder>
            <pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>error</level>
        </filter>
    </appender>
    <logger name="org.springframework" level="INFO"/>
    <logger name="org.springframework.web" level="INFO"/>
    <logger name="org.springframework.beans" level="INFO"/>
    <logger name="org.apache" level="WARN"/>
    <logger name="org.springboot.sample" level="INFO"/>
    <logger name="javax.activation" level="WARN"/>
    <logger name="org.mybatis.spring" level="INFO"/>


    <!-- Level: FATAL 0  ERROR 3  WARN 4  INFO 6  DEBUG 7 -->
    <root level="INFO">
        <appender-ref ref="console"/>
        <appender-ref ref="debug"/>
        <appender-ref ref="error"/>
        <appender-ref ref="info"/>
    </root>
</configuration>

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM