2

我有这个第 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 文档中读到我必须修改 StaticLoggerBinder 类……这真的意味着我实际上必须下载 SLF4J 源代码、修改类并重新编译它吗?

4

3 回答 3

9

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

SLF4J 是您用于记录代码的 API(例如log.info("blah")。但是,SLF4J 没有配置方面。在运行时,您只需将一个jar 添加到将 API 绑定到“真实”日志记录子系统的类路径中。如果你想使用 Log4J, add slf4j-log4j.jaror the StaticBinder jar for Simple or JDK , or Logback . 您可以像没有 SLF4J 的情况一样配置这些日志记录实现中的任何一个。

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

SLF4J 遗留页面深入解释了这些概念。哎呀,甚至还有一个模块可以将 Sysout.out/err 重定向到 SFL4J。

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

于 2011-02-06T07:18:22.870 回答
1

如果您想保持简单,请使用内置(从 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 发行版一起提供。这应该为你做。

于 2011-02-06T06:07:08.320 回答
-3

您的问题让我相信您还没有阅读SLF4J 用户手册。这是一个非常短的文件。如果在阅读文档后您仍然有相同的问题,那么文档没有达到目的,需要澄清。

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

于 2011-02-06T10:43:09.660 回答