可分发库中的SLF4J,如何获取Logger

Fra*_*fka 5 java logging slf4j

我想分发一个依赖于SLF4J记录器接口的库。获得可以很好地集成到任何其他项目中的记录器的最佳实践方法是什么?对于非结构化的问题风格,我仍然试图弄清楚所有这些东西是如何粘合在一起的。

在其他项目中我总是使用这段代码,因为我想获得一个自定义记录器:

private final static Logger LOGGER = LoggerFactory.getILoggerFactory().getLogger(NAME_OF_APP);
Run Code Online (Sandbox Code Playgroud)

如果我创建了类org.slf4j.impl.StaticLoggerBinder并拥有其他一些库,那么即使我只是调用LoggerFactory.getLogger(NAME_OF_APP)或使用了一些默认的 slf4j 工厂,是否也会使用其中定义的工厂 ?

我希望用户能够使用自己的工厂和记录器,那么更喜欢哪种方式,最重要的是为什么?

dre*_*kka 3

我不确定我完全理解你想要做什么。

SLF4J由两部分组成。首先是您在库中使用的 API 来编码日志记录调用。其次,您在开发过程中使用的实现来进行日志记录,但不要设置为库的依赖项。

因为 SLF4J 在类路径上查找实现,所以使用我们的库的开发人员可以简单地包含他们想要的任何实现。有时是一些非常奇怪的方式:-)他们可以使用一系列预构建的实现或自己的代码。这取决于他们。

我认为除了按原样使用 SLF4J 的 API 之外,您不需要做任何其他事情。