天天看點

SLF4j使用者手冊

簡單的Java日志模式(SLF4J)為各種日志架構,比如java.util、日志記錄、logback和log4j作為一個簡單的外觀或抽象。SLF4J允許使用者在部署時插入所需的日志架構。注意,SLF4J-enabling意味着你的 library/application 隻有一個強制性的依賴性,即slf4j-api-1.7.12.jar。
           

SINCE 1.6.0 如果沒有找到綁定類路徑,然後SLF4J将預設為無操作的實作。

SINCE 1.7.0 Logger提供了使用Object[]列印方法,這種變化意味着SLF4J需要JDK 1.5或更高版本。在底層Java編譯器将可變長度參數在方法中部分轉換為Object[]。

SINCE 1.7.5 對日志檢索進行了改善。

SINCE 1.7.9 通過将系統屬性slf4j.detectLoggerNameMismatch設定為true,可以實作SLF4J自動檢索錯誤命名。

一個簡單的示例

程式設計的傳統,下面是一個用SLF4J輸出”HelloWorld”的例子。

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

public class HelloWorld {

public static void main(String[] args) {

Logger logger = LoggerFactory.getLogger(HelloWorld.class);

logger.info(“Hello World”);

}

}

運作這個例子,你首先要下載下傳(http://www.slf4j.org/download.html)jar包并将其放到你的類路徑中。編譯和運作HelloWorld将導緻以下輸出被列印在控制台上。

SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”.

SLF4J: Defaulting to no-operation (NOP) logger implementation

SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

這個警告是因為沒有在類路徑中發現slf4j綁定。若要消除警告,需要将以下的綁定添加到類路徑:

slf4j-api-1.7.12.jar

slf4j-simple-1.7.12.jar

編譯和運作HelloWorld現在将産生以下輸出:

0 [main] INFO HelloWorld - Hello World

Hello World

下面的示例代碼示範了SLF4J的典型使用模式
           

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

public class Wombat {

final Logger logger = LoggerFactory.getLogger(Wombat.class);

Integer t;

Integer oldT;

public void setTemperature(Integer temperature) {

oldT = t;        
 t = temperature;
 logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT);
 if(temperature.intValue() > 50) {
   logger.info("Temperature has risen above 50 degrees.");
 }
           

}

}

Typical usage pattern

SLF4J不依賴于任何特殊的類裝載機制。實際上,使用唯一的日志架構時SLF4J的綁定在編譯時是固定的。例如,slf4j-log4j12-1.7.12.jar在使用log4j時編譯。在代碼中,除了slf4j-api-1.7.12.jar外,隻能選擇一個适當的模式來綁定到類路徑。不要在類路徑中添加多餘的模式,下圖是常用模式所需要jar包的展示。

    SLF4J接口和各種擴充卡是極其簡單的。而且SLF4J的加載和類加載器沒有關系,是以也沒有是以導緻的一些問題。
           

http://www.slf4j.org/manual.html

http://www.1024china.com/?p=208