我有一个第三方库,它具有:
- slf4j-api-1.5.5.jar
- slf4j-jdk14-1.5.5.jar
- jcl-over-slf4j-1.5.5.jar
我想针对这个库编写一些测试并查看它的日志输出,并且我不想添加任何更多的日志库(没有log4j或其他任何东西)。
我知道SLF 4J和CommonLogging都是日志抽象,因此我可能需要编写自己的简单具体日志记录器(也可能不是,因为jcl-over-slf 4j包括org.apache.commons.logging.impl.SimpleLog?)如果是,我应该实现什么接口,更重要的是,我如何设置SL 4J/公共日志记录以在我的测试中使用我的日志记录器?我在SLF 4J文档中读到我必须修改StaticLoggerBinder类...这真的意味着我必须下载SLF 4J源代码,修改类并重新编译它吗?
3条答案
按热度按时间qni6mghb1#
我们使用SLF 4J,它非常有用,但是有几个jar的名称令人困惑,而且一开始并不清楚哪些是不兼容的。
SLF 4J是用于在代码中进行日志记录的API(例如
log.info("blah")
。但是,SLF 4J没有配置方面。在运行时,将“恰好一个”jar添加到将API绑定到“真实的”日志记录子系统的类路径中。如果要使用Log4J,请添加slf4j-log4j.jar
或Simple or JDK的StaticBinder jar,或者Logback。您可以像通常不使用SLF 4J一样配置这些日志实现中的任何一个。有几个SLF4J modules可用于将使用Log4J、Apache Commons Logging和java.util.logging的API编写的现有日志记录语句重定向到SLF 4J。这允许您为所有这些分散的实现设置单个日志记录配置。(如果您有直接绑定到任何遗留日志记录框架的库,这对于避免同时配置Log4J和JUL是 * 非常 * 有用的。)
SLF4J legacy page深入地解释了这些概念。见鬼,甚至还有a module将Sysout.out/err重定向到SFL 4J。
更直接地回答您的问题:请确保您可以编写自己的日志实现来支持SLF 4J;但这样做的唯一原因是因为您已经被某些自制的蹩脚日志记录框架所束缚。
g52tjvyc2#
如果你想保持简单,使用内置的(jdk1.4)logger
https://docs.oracle.com/en/java/javase/19/docs/api/java.logging/java/util/logging/Logger.html
slf 4j附带了jdk绑定jar。你想要确保jar被部署到你的webapp WEB-INF/lib目录或者仅仅在你的类路径中。查看(slf4j.org/faq.html#where_is_binding)和这个(slf4j.org/faq.html)了解更多信息。
你要添加到你的类路径的jar是slf4j-jdk14.jar.注意jdk记录器已经可用,这个jar是slf 4j接口和选择的记录器实现之间的链接. jdk记录绑定jar是slf 4j发行版附带的.这应该可以为你做.
ugmeyewa3#
你的问题让我相信你没有看过the SLF4J user manual,这是一个很短的文档,如果阅读文档后你仍然有同样的问题,那么文档就没有达到它的目的,需要澄清。
无论如何,你不需要实现你自己的Logger类,只需要使用SLF4J附带的
slf4j-simple
。