2014-01-06 66 views
0

到implementation2假設你有一個web應用,在其中您正在使用自己的自定義SLF4J實現。 但由於某些性能原因,您希望將自定義slf4j實現切換到任何slf4j實現(如log4j/logback等)一段時間。如何切換SLF4J記錄器implementation1在運行時

一種方法是你可以從classpath中刪除自定義SLF4J罐子,並添加任何的log4j /罐子的logback和重新部署應用程序。

但是我們可以改變這個在運行?

回答

0

可惜這是不可能的SLF4J,除了可能有一些極端的Java反射兩輪牛車。

爲了實現它,你就需要在classpath多個SLF4J實施罐子。但slf4j期望恰好有一個實現存在。如果它找到多個,它會輸出一條警告消息並選擇它找到的第一個。選擇哪種實現方式很難預測,因爲它取決於許多因素,包括JVM實現和類路徑上JAR的順序。

所以,總的來說,沒有,SLF4J沒有設計這樣的工作方式。