我想依靠SLF4J
记录器接口分发一个lib。获取记录器的最佳实践方法是什么,它可以很好地集成到任何其他项目中?对于非结构化的问题风格,我还在努力弄清楚所有这些东西是如何粘在一起的。
在其他项目中,我总是使用这段代码,因为我想获得一个自定义记录器:
private final static Logger LOGGER = LoggerFactory.getILoggerFactory().getLogger(NAME_OF_APP);
如果我创建了类org.slf4j.impl.StaticLoggerBinder
并且拥有其他lib,那么即使我只是调用LoggerFactory.getLogger(NAME_OF_APP)
或使用某个默认的slf4j工厂,其中定义的工厂是否也会被使用?
我希望用户能够使用他自己的工厂和记录器,那么哪种方式是优惠,最重要的是为什么?
答案 0 :(得分:3)
我不确定我完全明白你要做什么。
SLF4J由两部分组成。首先,您在lib中使用的API来编写日志记录调用。其次是在开发过程中用于执行日志记录的实现,但不要将其设置为lib的依赖项。
因为SLF4J在类路径上查找实现,所以使用我们的lib的开发人员可以简单地包含他们想要的任何实现。有时是一些非常奇怪的方式:-)他们可以使用一系列预先构建的实现或自己编写代码。这取决于他们。
我认为你不需要做任何事情,只需按原样使用SLF4J的API。
答案 1 :(得分:2)
来自http://slf4j.org/manual.html
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(HelloWorld.class);
logger.info("Hello World");
}
}
因此,请始终使用LoggerFactory.getLogger(...)
。该参数允许记录器后端确定返回给您的记录器的行为。
答案 2 :(得分:0)
我不确定我完全理解你的情景。
但是从我的观点来看,你想要的是一个分布式日志记录组件。
这样做的一个简单方法是套接字appender。分布式日志记录的完整功能组件可能类似于Facebook的抄写员。
答案 3 :(得分:0)