一、日誌級別:日誌級別從低到高分爲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> <!– 總日誌大小 –>--> </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>