【问题标题】:SLF4J, Common Logging, console outputSLF4J,通用日志,控制台输出
【发布时间】:2011-02-06 05:42:31
【问题描述】:

我有这个第 3 方库:

  • slf4j-api-1.5.5.jar
  • slf4j-jdk14-1.5.5.jar
  • jcl-over-slf4j-1.5.5.jar

我想针对这个库编写一些测试并查看它的日志输出,并且我不想再添加任何日志库(没有 log4j 或其他任何东西)。

我知道 SLF4J 和 Common Logging 都是日志抽象,所以我可能需要编写自己的简单具体记录器(或者可能不需要,因为 jcl-over-slf4j 包含 org.apache.commons.logging.impl.SimpleLog?) .如果是这样,我应该实现哪些接口,更重要的是,如何设置 SL4J/Common Logging 以在我的测试中使用我的记录器?我在SLF4J docs that I have to modify the StaticLoggerBinder class 中读到...这真的意味着我实际上必须下载 SLF4J 源代码、修改类并重新编译它吗?

【问题讨论】:

  • 常见的日志记录是一种抽象吗?我认为是日志实现。(Spring 使用它)。您不必实现静态绑定器,jcl over slf4j 是您的静态绑定器实现。如果您不提供任何日志记录实现,那么我相信它将默认为 Java Util Logging。(如果您不打包 jcl-over-slf4j 记录器)。
  • 文档说“从 SLF4J 版本 1.6.0 开始,如果在类路径上找不到绑定,则 slf4j-api 将默认为丢弃所有日志请求的无操作实现” -- @ 987654322@
  • 但是 jul 肯定会在类路径中。它使用 jdk 打包。

标签: java apache-commons slf4j apache-commons-logging


【解决方案1】:

我们使用 SLF4J。它非常有用,但是其中一些 jar 的名称令人困惑,并且开始时不清楚哪些是不兼容的。

SLF4J 是您用于登录代码的 API(例如 log.info("blah")。但是,SLF4J 没有配置方面。在运行时,您将 恰好一个 jar 添加到绑定API 到“真正的”日志子系统。如果您想使用 Log4J,请添加 slf4j-log4j.jar 或为 Simple or JDKLogback 添加 StaticBinder jar。您可以像不使用 SLF4J 一样配置这些日志记录实现中的任何一个。

有几个 SLF4J modules 可用于将使用 Log4J、Apache Commons Logging 和 java.util.logging 的 API 编写的现有日志记录语句重定向到 SLF4J。这允许您为所有这些分散的实现设置单个日志记录配置。 (如果您有直接绑定到任何遗留日志框架的库,这对于避免同时配置 Log4J 和 JUL 非常有用。)

SLF4J legacy page 深入解释了这些概念。哎呀,甚至还有 a module 将 Sysout.out/err 重定向到 SFL4J。

为了更直接地回答您的问题:确定您可以编写自己的日志记录实现以在 SLF4J 下运行;但这样做的唯一原因是因为你已经被锁定在一些本土的疯狂日志框架中。

【讨论】:

    【解决方案2】:

    如果您想保持简单,请使用内置(从 jdk 1.4 开始)记录器

    http://download.oracle.com/javase/1.4.2/docs/api/java/util/logging/Logger.html

    jdk 绑定 jar 带有 slf4j。您要确保将 jar 部署到您的 webapp WEB-INF/lib 目录或仅在您的类路径中。有关详细信息,请参阅 (slf4j.org/faq.html#where_is_binding) 和此 (slf4j.org/faq.html)。

    您要添加到类路径的 jar 是 slf4j-jdk14.jar。注意 jdk 记录器已经可用,这个 jar 是 slf4j 接口和所选记录器实现之间的链接。 jdk 日志绑定 jar 随 slf4j 发行版一起提供。这应该为你做。

    【讨论】:

    • jdk绑定jar自带slf4j。您要确保将 jar 部署到您的 webapp WEB-INF/lib 目录或仅在您的类路径中。请参阅 (slf4j.org/faq.html#where_is_binding) 和此 (slf4j.org/faq.html) 了解更多信息
    • 要添加到类路径的 jar 是 slf4j-jdk14.jar。注意 jdk 记录器已经可用,这个 jar 是 slf4j 接口和所选记录器实现之间的链接。 jdk 日志绑定 jar 随 slf4j 发行版一起提供。这应该为你做。
    • 答案在 cmets 中,它基本上指向您的文档。我编辑了“答案”以包含 cmets。
    【解决方案3】:

    你的问题让我相信你没有读过the SLF4J user manual。这是一个非常短的文件。如果在阅读文档后您仍然有同样的问题,那么文档没有达到目的,需要澄清。

    无论如何,您不需要实现自己的 Logger 类。只需使用 SLF4J 附带的 slf4j-simple

    【讨论】:

      猜你喜欢
      • 2019-10-06
      • 2017-11-22
      • 1970-01-01
      • 2020-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多