slf4j 是如何工作的?未创建日志

2022-09-02 02:55:49

我在Java 1.6中提供了以下代码:

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

private static Logger log = LoggerFactory.getLogger(myfile.class);

现在,我把slf4j-api-1.6.4.jar和slf4j-simple-1.6.4.jar放在classpath中,代码编译得很好,但它在哪里记录了所有的信息????

我已经 log.info(“测试”);但它没有创建任何日志文件。我尝试用以下内容创建log4j.properties:

log4j.appender.stdout=org.apache.log4j.RollingFileAppender
log4j.appender.stdout.File=/var/abc.log
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d{dd-MMM-yyyy HH:mm:ss}]%6p %c{1}:%L - %m%n
log4j.appender.stdout.MaxFileSize=50000KB
log4j.appender.stdout.MaxBackupIndex=200

log4j.rootLogger=info, stdout

但它不起作用,我知道上面的文件是log4j所必需的,但是slf4j是如何工作的?我是否需要创建任何类似于log4j的属性文件?如果是这样,我需要把它放在哪里?

谢谢!


答案 1

SLF4J只是一个门面,它允许您轻松切换不同的日志记录框架。所有使用 SLF4J API 的日志记录调用都将委托给底层日志记录框架 。

您不必为 SLF4J 创建任何属性文件。您需要做的就是使用与您的日志记录框架匹配的正确“SLF4J绑定”jar,以便将SLF4J API的所有日志记录调用委托给底层日志记录框架。下图显示了 SLF4J、“SLF4J 绑定”和底层日志记录框架之间的关系。

enter image description here

slf4j-simple-1.6.4.jar将所有事件委托给 System.err,但不委托给 log4j API.So,您应该改用。slf4j-log4j12-1.6.4.jar

总而言之,您应该使用以下 jar:

  • slf4j-api-1.6.4.jar
  • slf4j-log4j12-1.6.4.jar
  • log4j-1.2.16.jar

参考


答案 2

SLF4J只是一个日志记录抽象 - 它本身不写入任何日志。使用Logback - 它本机实现SLF4J,并由编写SLF4J和log4j的同一个人编写。SLF4J和Logback是一个很棒的框架 - 我们喜欢SLF4J如何将其他框架(JUL,Commons Logging,log4j)连接到我们选择的框架(即Logback)。


推荐