如何在运行时将slf4j logger implementation1切换到implementation2

时间:2014-01-06 11:39:29

标签: java logging

假设您有一个Web应用程序,您正在使用自己的自定义slf4j实现。 但由于某些性能原因,您希望将自定义slf4j实现切换到任何slf4j实现(如log4j / logback等)一段时间。

一种方法是你可以从类路径中删除自定义的slf4j jar并添加任何log4j / logback jar并重新部署应用程序。

但是我们可以在运行时更改吗?

1 个答案:

答案 0 :(得分:0)

不幸的是,这对slf4j来说是不可能的,除了可能有一些极端的Java反射hackery。

要实现它,您需要在类路径上使用多个slf4j实现jar。但是slf4j预计会出现一个实现。如果找到多个,它会输出一条警告消息并选择它找到的第一个消息。选择哪种实现很难预测,因为它取决于许多因素,包括JVM实现和类路径上的jar顺序。

所以,总而言之,不,slf4j的设计不是这样的。