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添加到类路径:
编译后运行,则控制台出现以下输出:
[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,本地实现slf4j。logback的 ch.qos.logback.classic.Logger类直接实现slf4j 的org.slf4j.Logger接口。所以,结合使用slf4j和logback的内存和计算量几乎为零。
更改日志框架,直接更改类路径的包便可,如将slf4j-jdk14-1.7.12.jar换成 slf4j-log4j12-1.7.12.jar。slf4j一次只能绑定一个框架,不要在路径上放置两个或更多的链接jar。
slf4j接口及适配器都极为简单。
Libraries
那些普遍使用的组件和库的做者使用slf4j接口,能避免终端用户必须使用何种日志框架,用户能够在部署时选择喜欢的日志框架,更改对应的链接jar便可,该方法简单有效。