Java的简单日志门面( Simple Logging Facade for Java SLF4J)作为一个简单的门面或抽象,用来服务于各种各样的日志框架,比如java.util.logging、logback和log4j。SLF4J允许最终用户在部署时集成自己想要的日志框架。
需要注意的是,你的应用启用SLF4J意味着需要一个额外的依赖:slf4j-api-1.7.19.jar。
从1.6.0开始:如果在class path没有找到绑定,SLF4J将默认一个无操作的实现。
从1.7.0开始:Logger接口中的打印方法现在提供variants取代了Object[]用来接收可变长参数。这个改变意味着SLF4J需要JDK 1.5或更高的版本。Java编译器在底层把方法中的可变参数部分转换成Object[]。因此,编译器生成的Logger接口在1.7.x版本中和它对应的的1.6.x版本中是没有区别的。因此SLF4J得1.7.x版本和1.6.x版本是 完全兼容的。
从1.7.5开始:日志的检索时间有了一个显著的改善,鉴于这个改善,非常鼓励用户迁移到SLF4J 1.7.5或更高的版本。
从1.7.9开始: 通过设置slf4j.detectLoggerNameMismatch 系统属性为true,SLF4J能自动的spot incorrectly named loggers.
Hello World
按照惯例,下面的示例说明最简单的方法使用SLF4J输出”hello world“。他首先获取一个名为”HelloWorld“的记录器,这个记录器用来记录”HelloWorld“。
package com.flea.system.mongo.manager;
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");
}
}
一旦你添加一个绑定在你的class path下,这个警告将会消失。假设你添加了 slf4j-simple-1.7.19.jar,你的class path包含:
slf4j-api-1.7.19.jar
slf4j-simple-1.7.19.jar
编译并运行HelloWorld程序,现在在控制台会有下列输出:
23:29:40.627 [main] INFO com.flea.system.mongo.manager.HelloWorld - Hello World
典型使用模式
下面的示例代码表明了SLF4J的典型使用模式。注意15行”{}“的使用,查看“What is the fastest way of logging?”获取更多细节。