【问题标题】:How slf4j works? No log getting createdslf4j 是如何工作的?没有创建日志
【发布时间】:2012-02-02 23:09:08
【问题描述】:

我在 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 放在类路径中,代码编译得很好,但是它在哪里记录所有信息????

我有 log.info("test");但它没有创建任何日志文件。我尝试使用以下内容创建 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 的属性文件吗?如果是这样,我需要把它放在哪里?

谢谢!

【问题讨论】:

  • SLF4J 只是一个日志接口。您需要在类路径上实现日志记录。你有吗?
  • 您导入 slf4j-simple-1.6.4.jar,但您使用 log4j 作为您的记录器,这就是问题所在。

标签: java slf4j


【解决方案1】:

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

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

slf4j-simple-1.6.4.jar 将所有事件委托给 System.err,但不委托给 log4j API。因此,您应该改用 slf4j-log4j12-1.6.4.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)。

【讨论】:

  • 我可以将 log4j 与这个 slf4j 一起使用吗?
  • 是的,如果您愿意,可以使用 SLF4J 登录到 log4j。这就是 SLF4J 的美妙之处——登录到它的界面并随时更改实现。您需要将文件 slf4j-log4j.jar(或类似的东西,我从内存中编写)添加到类路径,当然您需要一个 log4j 属性文件。 Logback 与 log4j 非常相似——正如我所说的,它们是同一个人的。 logback 避免了 log4j 的一些缺点……他从制作 log4j 中学到了:)
【解决方案3】:

我使用了 slf4j-api (jar)。我用 logback-classic 替换了依赖项(jar)logback-core 然后它开始记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多