使用slf4j和任何其他日志记录框架(log4j / java.util.logging)进行日志记录

时间:2015-02-25 03:40:10

标签: java logging slf4j

在我的项目中使用slf4j + log4j进行日志记录。我是java的新手并试图了解日志记录的工作原理。如果我想使用log4j以外的其他日志框架说java.util.logging,那么我不需要更改任何代码,因为我使用的是slf4j。我只需要删除log4j的jar并添加java.util.logging的二进制文件。当我们不更改任何代码时,我试图理解它是如何工作的。如果问题不明确,请告诉我。如果您能指出一些链接或示例,我真的很感激。

好的,例如我在下面的例子中使用了slf4j和java.util.logging。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class SLF4JHello {

    private final Logger slf4jLogger = LoggerFactory.getLogger(SLF4JHello.class);

    public void sayHello(String name){

        slf4jLogger.info("Hi,{}",name); 
        slf4jLogger.info("Welcome to the HelloWorld example of SLF4J");
    }

    public static void main(String[] args) {
        SLF4JHello slf4jHello = new SLF4JHello();
        slf4jHello.sayHello("srccodes.com");
    }
}

我在类路径中有jar slf4j-api-1.7.8.jar和slf4j-jdk14-1.7.7-1.0.0 jar。

这将导致控制台中出现以下输出。


Feb 25, 2015 9:29:52 AM com.srccodes.examples.SLF4JHello sayHello INFO: Hi,srccodes.com    
Feb 25, 2015 9:29:52 AM com.srccodes.examples.SLF4JHello sayHello INFO: Welcome to the HelloWorld example of SLF4J

SLF4J是一个简单的日志记录系统,允许最终用户在部署时插入所需的日志记录系统。

我的问题是 - 现在如果我想为上面的代码切换到log4j而不是java.util.logging,我必须用log4j jar替换jul jar,并且不需要在代码中更改任何内容。现在代码的行为是什么?它仍会显示相同的输出吗?

我的意思是代码如何与不同的日志框架不同地工作?

1 个答案:

答案 0 :(得分:1)

SLF4J委派的不同日志记录实现的输出取决于日志记录框架的配置。每个框架都可以做不同的事情。

相应文档中介绍了如何配置不同的框架。 Log4jLog4j2Logback文档。