SLF4J,通用日志记录,控制台输出

时间:2011-02-06 05:42:32

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

我的第三方图书馆有:

  • SLF4J-API-1.5.5.jar
  • SLF4J-jdk14-1.5.5.jar
  • JCL-过SLF4J-1.5.5.jar

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

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

3 个答案:

答案 0 :(得分:9)

我们使用SLF4J。它非常有用,但有几个罐子的名字令人困惑,而且开始知道哪些罐子不兼容并不是很清楚。

SLF4J是用于登录代码的API(例如log.info("blah")。但是,SLF4J没有配置方面。在运行时,您只需将一个 jar添加到类路径中将API绑定到“真实”日志记录子系统。如果要使用Log4J,请为Simple or JDKLogback添加slf4j-log4j.jar或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下使用;但这样做的唯一原因是因为你已经陷入了一些本土的垃圾邮件框架。

答案 1 :(得分: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)和this(slf4j.org/faq.html)。

要添加到类路径的jar是slf4j-jdk14.jar。请注意,jdk记录器已经可用,此jar是slf4j接口与所选记录器实现之间的链接。 jdk日志记录绑定jar附带slf4j发行版。这应该为你做。

答案 2 :(得分:-3)

你的问题让我相信你没有读过the SLF4J user manual。这是一篇非常简短的文件。如果在阅读文档后仍然存在相同的问题,则该文档无法达到其目的,需要澄清。

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