天天看點

SLF4J和Logback日志架構詳解SLF4J和Logback日志架構詳解

作者:chszs,轉載需注明。部落格首頁:http://blog.csdn.net/chszs

本文講述SLF4J和Logback日志架構。

SLF4J和Logback日志架構詳解SLF4J和Logback日志架構詳解
SLF4J和Logback日志架構詳解SLF4J和Logback日志架構詳解

SLF4J是一套簡單的日志外觀模式的Java API,幫助在項目部署時對接各種日志實作。

LogBack在運作時使用JMX幫助修改日志配置,在生産狀态下無需重新開機應用程式。

SLF4J是簡單的日志外觀模式架構,抽象了各種日志架構例如Logback、Log4j、Commons-logging和JDK自帶的logging實作接口。它使得使用者可以在部署時使用自己想要的日志架構。SLF4J是輕量級的,在性能方面幾乎是零消耗的。

SLF4J沒有替代任何日志架構,它僅僅是标準日志架構的外觀模式。如果在類路徑下除了SLF4J再沒有任何日志架構,那麼預設狀态是在控制台輸出日志。

Logback是Log4j的改進版本,而且原生支援SLF4J(因為是同一作者開發的),是以從其它日志架構如Log4j或JDK的logging遷移到Logback是完全可行的。

由于Logback原生支援SLF4J,是以Logback+SLF4J的組合是日志架構的最佳選擇,比SLF4J+其它日志架構的組合要快一些。而且Logback的配置可以是XML或Groovy代碼。

注意一個重要的特性,Logback通過JMX修改日志配置(比如日志級别從Debug調整到INFO),可以從JMX控制台直接操作,無需重新開機應用程式。

此外,Logback的異常堆棧跟蹤的資訊,有助于調試。

java.lang.NullPointerException: null  

at com.fimt.poc.LoggingSample.<init>(LoggingSample.java:16) [classes/:na]  

at com.fimt.poc.LoggingSample.main(LoggingSample.java:23) [fimt-logging-poc-1.0.jar/:1.0]  

import org.slf4j.Logger;  

import org.slf4j.LoggerFactory;  

private final Logger logger = LoggerFactory.getLogger(LoggingSample.class);  

所有的方法預設都使用字元串作為輸入。

logger.info("This is sample info statement");  

在pom.xml包含下面的依賴:它會自動包含所有的依賴包logback-core、slf4j-api……

<dependency>  

  <groupId>ch.qos.logback</groupId>  

  <artifactId>logback-classic</artifactId>  

  <version>1.0.7</version>  

</dependency>  

SLF4J能用于現有的日志架構如Log4j、Commons-logging、java.util.logging(JUL)。

在pom.xml包含下面的依賴

  <groupId>org.slf4j</groupId>  

  <artifactId>slf4j-log4j12</artifactId>  

  <version>1.7.2</version>  

  <artifactId>slf4j-jdk14</artifactId>