這是很容易的,而不是一個性能問題了。
SLF4J manual中記錄了兩種方法。如果你有logging.properties
SLF4JBridgeHandler.removeHandlersForRootLogger();
SLF4JBridgeHandler.install();
:也有在Javadocs
精確的例子。如果你沒有logging.properties(爲的java.util.logging),將它添加到您的引導代碼(並且要保持它的),將它添加到它:
handlers = org.slf4j.bridge.SLF4JBridgeHandler
在任何情況下,加上07月到slf4j.jar到類路徑中。或通過Maven的依賴:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>1.7.0</version>
</dependency>
爲了避免性能下降,添加此contextListener到logback.xml(作爲的logback版本0.9.25):
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
<!-- reset all previous level configurations of all j.u.l. loggers -->
<resetJUL>true</resetJUL>
</contextListener>
...
</configuration>
有一個大好處通過咬子彈和重構到slf4j。也就是說,您可以在字符串中使用{}來延遲toString()調用。 – 2011-06-01 09:06:14
toString()真的是現代JVM的一個問題嗎?我意識到避免toString()調用會更有效率,但我的理解是對象創建很便宜,並且這會屬於不成熟的優化。 – 2012-05-30 11:16:26
是的,如果您正在製作豐富的日誌記錄語句,那麼這真的是一個問題。在現代jvm中對2015年的生產系統進行剖析不必要的調用爲生產中未實際啓用的調試語句創建字符串是生產系統的一個cpu熱點。 – simbo1905 2015-11-28 11:52:55