我们正在从普通的Log4J(使用reload4j)切换到使用SLF4J。在一段代码中,我们检查日志框架是否初始化。该检查背后的目标是,在记录系统初始化之前,如果需要记录某些内容,则可以回退到打印到System.err。
private static boolean isLoggerInitialized() {
return LOGGER.getParent().getAllAppenders().hasMoreElements();
}
这是不可能的SLF4J了。因此,我正在寻找一种替代方法来检查SLF4J的初始化状态。
1条答案
按热度按时间n3h0vuf21#
SLF 4J是一个通用的日志记录API,由各种日志记录框架实现(例如Logback,Log4j 2等),因此,尽管答案稍微取决于您使用的实现,但所有现代日志记录实现都不需要“初始化”;它们在声明后就可以使用了,所以你的解决方案是:
如果您使用的是Spring starter libraries,默认的logging libraries是Logback。你可以选择其他的东西,包括一个不同的Slf 4j兼容日志库(所有主要的都是兼容的)在你的类路径。至于“初始化”,如果你选择一个主流的,你选择什么并不重要。
与其编写日志的声明,我建议使用Lombok logging annotations之一,这样代码就变得简单了:
log
字段的声明已经为您完成(并且立即可以使用)。