slf4j

Java簡單日誌外觀(Simple Logging Façade for Java, slf4j)是其餘日誌框架(java.util.logging, logback, log4j)的一個簡單的外觀或抽象,以相同API使用不一樣的日誌框架,在部署時插入本身喜歡的日誌框架。html

 

slf4j依賴項爲 slf4j-api.jar,若是在類路徑上沒有綁定任何框架,則slf4j默認不執行任何操做。java

 

Hello Worldapi

按照一向習俗,下例解釋用最簡單的方式以slf4j輸出 "Hello world"框架

import org.slf4j.Logger;spa

import org.slf4j.LoggerFactory;debug

 

public class HelloWorld {日誌

public static void main(String[] args) {code

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

logger.info("Hello World");blog

}

}

若是隻將slf4j-api.jar添加到路徑中,運行後出現以下信息:

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-simple.jar添加到類路徑:

  • slf4j-api-1.7.12.jar
  • slf4j-simple-1.7.12.jar

編譯後運行,則控制檯出現以下輸出:

[main] INFO cn.ac.dicp.slf4j.HelloWorld - 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 tem){

oldT = t;

t = tem;

logger.debug("temperature set to {}. Old temperature was {}.",toString(),oldT);

if(tem.intValue() > 50){

logger.info("Temperature has risen above 50 degrees.");

}

}

}

注意上面的'{}'

 

綁定日誌框架

slf4j支持多種日誌框架:

slf4j-log4j12-1.7.12.jar

綁定log4j 1.2,一個應用普遍的日誌框架,在路徑中同時要添加log4j.jar.

slf4j-jdk14-1.7.12.jar

綁定 java.util.logging,也稱爲JDK 1.4 logging

slf4j-nop-1.7.12.jar

綁定NOP,默默的放棄全部日誌。

slf4j-simple-1.7.12.jar

綁定簡單實現,輸出全部日誌到System.err。只有level 高於或等於INFO的信息輸出。

slf4j-jcl-1.7.12.jar

綁定Jakarta Commons Logging

logback-classic-1.0.13.jar

須要logback-core-1.0.13.jar

NATIVE IMPLEMENTATION slf4j外,也有slf4j自身的綁定礦建。如logback,本地實現slf4jlogback ch.qos.logback.classic.Logger類直接實現slf4j org.slf4j.Logger接口。所以,結合使用slf4jlogback的內存和計算量幾乎爲零。

 

更改日誌框架,直接更改類路徑的包便可,如將slf4j-jdk14-1.7.12.jar換成 slf4j-log4j12-1.7.12.jarslf4j一次只能綁定一個框架,不要在路徑上放置兩個或更多的鏈接jar

clip_image001

 

slf4j接口及適配器都極爲簡單。

 

Libraries

那些普遍使用的組件和庫的做者使用slf4j接口,能避免終端用戶必須使用何種日誌框架,用戶能夠在部署時選擇喜歡的日誌框架,更改對應的鏈接jar便可,該方法簡單有效。

相關文章
相關標籤/搜索