我目前正在观察一个第三方库(即restfb)正在使用java.util.logging,即使我的logback.xml中没有配置SLF4J控制台附加程序,我也看到这些日志最终出现在STDOUT中。我的类路径中还有jul- slf4j桥。安装网桥时,jul-to- slf4j网桥是否仅登录到由logback配置的附加程序,还是也登录到stdout?
您需要致电SLF4JBridgeHandler.install()。您还需要在java.util.logging中的root记录器(以下摘录中的原因)上启用所有日志级别,并删除默认的控制台附加程序。
SLF4JBridgeHandler.install()
该处理程序会将jul日志记录重定向到SLF4J。但是,只有在jul中启用的日志将被重定向。例如,根据定义,如果调用jul logger的日志语句禁用了该语句,则该语句将不会到达任何SLF4JBridgeHandler实例,并且无法重定向。
整个过程可以像这样完成
import java.util.logging.Logger; import org.slf4j.bridge.SLF4JBridgeHandler; SLF4JBridgeHandler.removeHandlersForRootLogger(); SLF4JBridgeHandler.install(); Logger.getLogger("").setLevel(Level.FINEST); // Root logger, for example.
出于性能方面的考虑,您可以将级别设置为高于最佳级别,但是如果不java.util.logging首先启用它们就无法打开这些日志(由于上面摘录中所述的原因)。
java.util.logging