LogBack.xml文件配置

Logback-spring.xml配置文件 

一、日誌級別:日誌級別從低到高分爲TRACE < DEBUG < INFO < WARN < ERROR < FATAL,例如:若是設置爲WARN,則低於WARN的信息都不會輸出html

二、根節點:configurationjava

  configuration 有三個可選屬性:web

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

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

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

三、property節點:springboot

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

       <property>定義的值可使用「${變量名}」到logger上下文中。app

四、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級別的)

六、logger節點

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

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

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

     若是未設置此屬性,那麼當前logger將會繼承上級的級別。

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

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

七、root節點

     也是<logger>元素,可是它是根logger。只有一個level屬性,由於已經被命名爲"root".

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

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

八、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]

九、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="/home/pams"></property>
    <property name="LOG_PATH" value="log"/>


    <springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue="dotware"/>
    <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>
相關文章
相關標籤/搜索