首页 > 代码库 > java中的log

java中的log

 

slf4j

slf4j的全称是:  Simple Logging Facade for Java (SLF4J)。

slf4j的官方网站:http://www.slf4j.org

简介

SLF4J不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。

实际上,SLF4J所提供的核心API是一些接口以及一个LoggerFactory的工厂类。从某种程度上,SLF4J有点类似JDBC,不过比JDBC更简单,在JDBC中,你需要指定驱动程序,而在使用SLF4J的时候,不需要在代码中或配置文件中指定你打算使用那个具体的日志系统。如同使用JDBC基本不用考虑具体数据库一样,SLF4J提供了统一的记录日志的接口,只要按照其提供的方法记录即可,最终日志的格式、记录级别、输出方式等通过具体日志系统的配置来实现,因此可以在应用中灵活切换日志系统。

如果我们在开发一个公共类库,那么应该使用slf4j。因为别的应用使用我们的类库时,不能强制指定应该使用哪个日志系统。不能影响最终用户使用哪种日志系统。如果我们开发的是一个简单的独立的应用,比较确定使用哪种日志系统。这时候就没必要使用slf4j了。

使用

slf4j提供了一种对各种日志的抽象,允许我们在代码中只使用这种抽象的接口。具体的实现,是在运行时进行绑定的。

要想使用slf4j,需要在项目中引用包:slf4j-api-1.7.7.jar.

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");
 
}
}

上面的helloworld中有2个接口:Logger和LoggerFactory。这2个接口是slf4j提供的一种抽象。

如果运行上面的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-simple-1.7.7.jar。再运行slf4j,可以看到有输出日志了。
 
 
slf4j支持多种日志框架。
slf4j-log4j12-1.7.7.jar
slf4j-jdk14-1.7.7.jar
slf4j-nop-1.7.7.jar
slf4j-simple-1.7.7.jar
slf4j-jcl-1.7.7.jar

 

concrete-bindings