LogBack的配置大概包括3部分,Appender,Logger,Root的配置。
Appender: 負責寫日志的組件, 兩個必要屬性name和class。name指定appender名稱,class指定appender的實現方式;不同的實現方式可配置不同的子節點;通用的有: encoder(格式化方式)
??? 以按天日志為例:
??????? class=ch.qos.logback.core.rolling.RollingFileAppender
??????? 可配置的子節點有:
? ? ? ? file:被寫入的文件名,可以是相對目錄,也可以是絕對目錄,如果上級目錄不存在會自動創建,沒有默認值。
? ? ? ? append:如果是 true,日志被追加到文件結尾,如果是 false,清空現存文件,默認是true。
? ? ? ? encoder:格式化方式。
? ? ? ? rollingPolicy:當發生滾動時,決定RollingFileAppender的行為,涉及文件移動和重命名。TimeBasedRollingPolicy:最常用的滾動策略,它根據時間來制定滾動策略,有子節點:
????????????? fileNamePattern: 包含文件名及“%d”轉換符,“%d”可以包含一個java.text.SimpleDateFormat指定的時間格式,如:.%d{yyyy-MM-dd}.%i.log。RollingFileAppender的file字節點可有可無,通過設置file,可以為活動文件和歸檔文件指定不同位置,當前日志總是記錄到file指定的文件(活動文件),活動文件的名字不會改變;如果沒設置file,活動文件的名字會根據fileNamePattern的值,每隔一段時間改變一次。“/”或者“\”會被當做目錄分隔符。
? ? ? ? ? ? ? maxHistory:控制保留的文件的最大數量,超出數量就刪除舊文件
??????? triggeringPolicy:告知RollingFileAppender合適激活滾動。
? ? ? ? prudent:當為true時,不支持FixedWindowRollingPolicy。支持TimeBasedRollingPolicy,但是有兩個限制,1不支持也不允許文件壓縮,2不能設置file屬性,必須留空。
e.g:
Logger:設置某一個包或者具體的某一個類的日志打印級別、以及指定appender
??? 屬性信息:
?????????? name:? 用來指定受此loger約束的某一個包或者具體的某一個類。
?????????? level: 用來設置打印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,還有一個特俗值INHERITED或者同義詞NULL,代表強制執行上級的級別。
??????????? addtivity:? 是否向上級loger傳遞打印信息。默認是true。
? ? 子節點:
?????????? appender-ref ?:?可以包含零個或多個元素,標識這個appender將會添加到這個loger。
e.g:
Root: 根loger。只有一個level屬性
??? level: 用來設置打印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能設置為INHERITED或者同義詞NULL。
默認是DEBUG。
e.g:
全局配置文件:
a. 配置文件的屬性
scan:?當此屬性設置為true時,配置文件如果發生改變,將會被重新加載,默認值為true。
scanPeriod:?設置監測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認單位是毫秒。當scan為true時,此屬性生效。默認的時間間隔為1分鐘。支持的時間單位: milliseconds, seconds, minutes or hours
debug: 當此屬性設置為true時,將打印出logback內部日志信息。默認值為false。
e.g:
b. 設置上下文名稱
每個logger都關聯到logger上下文,默認上下文名稱為“default”。使用設置成其他名字,用于區分不同應用程序的記錄。
e.g:
c. 設置變量
通過定義的值會被插 入到logger上下文中。定義變量后,可以使“${}”來使用變量
e.g:
配置文件樣例: