logback.xml配置詳解

一:根節點 包含的屬性:

  • scan
    當此屬性設置爲true時,配置文件若是發生改變,將會被從新加載,默認值爲true。java

  • scanPeriod
    設置監測配置文件是否有修改的時間間隔,若是沒有給出時間單位,默認單位是毫秒。當scan爲true時,此屬性生效。默認的時間間隔爲1分鐘。app

  • debug
    當此屬性設置爲true時,將打印出logback內部日誌信息,實時查看logback運行狀態。默認值爲false。url

例如:spa

<configuration scan="true" scanPeriod="60 seconds" debug="false">  
      <!-- 其餘配置省略-->  
</configuration>

二:根節點 的子節點:

根節點<configuration>的子節點

2.1設置上下文名稱:<contextName>

每一個logger都關聯到logger上下文,默認上下文名稱爲default。但可使用<contextName>設置成其餘名字,用於區分不一樣應用程序的記錄。一旦設置,不能修改。.net

<configuration scan="true" scanPeriod="60 seconds" debug="false">  
      <contextName>myAppName</contextName>  
      <!-- 其餘配置省略--> 
</configuration>

2.2設置變量: <property>

用來定義變量值的標籤,<property> 有兩個屬性name和value;debug

  • name: 變量的名稱日誌

  • value: 變量定義的值。code

經過<property>定義的變量值會被插入到logger上下文中。在此上下文中可使「${變量名稱}」來使用變量值。orm

例如使用<property>定義上下文名稱,而後在<contentName>設置logger上下文時使用。xml

<configuration scan="true" scanPeriod="60 seconds" debug="false">  
      <property name="" value="myAppName" />   
      <contextName>${}</contextName>  
      <!-- 其餘配置省略-->  
</configuration>

2.3獲取時間戳字符串:<timestamp>

兩個屬性:

  • key: 標識此<timestamp> 的名字;

  • datePattern: 設置將當前時間(解析配置文件的時間)轉換爲字符串的模式,遵循java.txt.SimpleDateFormat的格式。

例如將解析配置文件的時間做爲上下文名稱:

<configuration scan="true" scanPeriod="60 seconds" debug="false">  
      <timestamp key="" datePattern="yyyyMMdd'T'HHmmss"/>   
      <contextName>${}</contextName>  
      <!-- 其餘配置省略-->

2.4設置loger:

<loger>

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

  • name
    用來指定受此loger約束的某一個包或者具體的某一個類。

  • level
    用來設置打印級別,大小寫無關:TRACEDEBUG, INFO,WARN,ERROR,ALLOFF,還有一個特殊值INHERITED或者同義詞NULL`,表明強制執行上級的級別。 
    若是未設置此屬性,那麼當前loger將會繼承上級的級別。

  • addtivity
    是否向上級loger傳遞打印信息。默認是true。

<root>

也是 元素,可是它是根loger。只有一個level屬性,應爲已經被命名爲"root」.

  • level: 用來設置打印級別,大小寫無關:TRACEDEBUGINFOWARNERRORALL 和 OFF,不能設置爲INHERITED或者同義詞NULL。 
    默認是DEBUG。

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

例如: 
LogbackDemo.java類

package logback;  

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;  
public class LogbackDemo {  
    private static Logger log = LoggerFactory.getLogger(LogbackDemo.class);  
    public static void main(String[] args) {  
        log.trace("======trace");  
        log.debug("======debug");  
        log.info("======info");  
        log.warn("======warn");  
        log.error("======error");  
    }  
}

3、logback.xml配置文件

第1種:只配置root

<configuration>   

  <appender name="" class="ch.qos.logback.core.ConsoleAppender">   
    <!-- encoder 默認配置爲PatternLayoutEncoder -->   
    <encoder>   
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>   
    </encoder>   
  </appender>   

  <root level="">             
    <appender-ref ref="" />   
  </root>     
  </configuration>

其中appender的配置表示打印到控制檯(稍後詳細講解appender ); 
<root level="INFO">將root的打印級別設置爲「INFO」,指定了名字爲「STDOUT」的appender。

當執行logback.LogbackDemo類的main方法時,root將級別爲「INFO」及大於「INFO」的日誌信息交給已經配置好的名爲「STDOUT」的appender處理,「STDOUT」appender將信息打印到控制檯;

打印結果以下:

13:30:38.484 [main] INFO  logback.LogbackDemo - ======info  
13:30:38.500 [main] WARN  logback.LogbackDemo - ======warn  
13:30:38.500 [main] ERROR logback.LogbackDemo - ======error

第2種:帶有loger的配置,不指定級別,不指定appender:

<configuration>   

  <appender name="" class="ch.qos.logback.core.ConsoleAppender">   
    <!-- encoder 默認配置爲PatternLayoutEncoder -->   
    <encoder>   
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>   
    </encoder>   
  </appender>   

  <!-- logback爲java中的包 -->   
  <logger name=""/>   

  <root level="DEBUG">             
    <appender-ref ref="" />   
  </root>     
  </configuration>

其中appender的配置表示打印到控制檯(稍後詳細講解appender ); 
<logger name="logback" />將控制logback包下的全部類的日誌的打印,可是並沒用設置打印級別,因此繼承他的上級<root>的日誌級別「DEBUG」; 
沒有設置addtivity,默認爲true,將此loger的打印信息向上級傳遞; 
沒有設置appender,此loger自己不打印任何信息。 
<root level="DEBUG">將root的打印級別設置爲「DEBUG」,指定了名字爲「STDOUT」的appender。

當執行logback.LogbackDemo類的main方法時,由於LogbackDemo 在包logback中,因此首先執行<logger name="logback" />,將級別爲「DEBUG」及大於「DEBUG」的日誌信息傳遞給root,自己並不打印; 
root接到下級傳遞的信息,交給已經配置好的名爲「STDOUT」的appender處理,「STDOUT」appender將信息打印到控制檯;

打印結果以下:

13:19:15.406 [main] DEBUG logback.LogbackDemo - ======debug  
13:19:15.406 [main] INFO  logback.LogbackDemo - ======info  
13:19:15.406 [main] WARN  logback.LogbackDemo - ======warn  
13:19:15.406 [main] ERROR logback.LogbackDemo - ======error

第3種:帶有多個loger的配置,指定級別,指定appender:

<configuration>   
   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">   
    <!-- encoder 默認配置爲PatternLayoutEncoder -->   
    <encoder>   
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>   
    </encoder>   
  </appender>   

  <!-- logback爲java中的包 -->   
  <logger name="logback"/>   
  <!--logback.LogbackDemo:類的全路徑 -->   
  <logger name="logback.LogbackDemo" level="INFO" additivity="false">  
    <appender-ref ref="STDOUT"/>  
  </logger>   

  <root level="ERROR">             
    <appender-ref ref="STDOUT" />   
  </root>     
  </configuration>

其中appender的配置表示打印到控制檯(稍後詳細講解appender );

<logger name="logback" />將控制logback包下的全部類的日誌的打印,可是並沒用設置打印級別,因此繼承他的上級<root>的日誌級別「DEBUG」; 
沒有設置addtivity,默認爲true,將此loger的打印信息向上級傳遞; 
沒有設置appender,此loger自己不打印任何信息。

<logger name="logback.LogbackDemo" level="INFO" additivity="false">控制logback.LogbackDemo類的日誌打印,打印級別爲「INFO」; 
additivity屬性爲false,表示此loger的打印信息再也不向上級傳遞, 
指定了名字爲「STDOUT」的appender。

<root level="DEBUG">將root的打印級別設置爲「ERROR」,指定了名字爲「STDOUT」的appender。

當執行logback.LogbackDemo類的main方法時,先執行<logger name="logback.LogbackDemo" level="INFO" additivity="false">,將級別爲「INFO」及大於「INFO」的日誌信息交給此loger指定的名爲「STDOUT」的appender處理,在控制檯中打出日誌,再也不向次loger的上級 <logger name="logback"/> 傳遞打印信息; 
<logger name="logback"/>未接到任何打印信息,固然也不會給它的上級root傳遞任何打印信息;

打印結果以下:

14:09:01.531 [main] INFO  logback.LogbackDemo - ======info  
14:09:01.531 [main] INFO  logback.LogbackDemo - ======info  
14:09:01.531 [main] WARN  logback.LogbackDemo - ======warn  
14:09:01.531 [main] WARN  logback.LogbackDemo - ======warn  
14:09:01.531 [main] ERROR logback.LogbackDemo - ======error  
14:09:01.531 [main] ERROR logback.LogbackDemo - ======error
相關文章
相關標籤/搜索