2011-12-28 116 views
0

我有一個應用程序使用java.util日誌和此應用程序使用的庫使用不同的日誌框架,如sl4j,jcl,log4j。現在我想將所有日誌重定向到log4j,所以我可以對其進行全面控制。因此,我將這些依賴關係添加到我的pom中,作爲this的建議。並使用不同的記錄器進行日誌記錄,如下所示。 爲什麼util log不存在於輸出中。使用slf4j api將日誌重定向到log4j

   _loggerUtil.log(Level.SEVERE, "*********************Util log**********"); 
      _loggerCommon.fatal("*********commons log ************"); 
      _loggerSlf4j.error("**************sl4j log **************"); 
      _loggerLog4j.fatal("**************log4j log**************"); 



    2012-01-05 17:11:35,508 [http-8080-3] ERROR com.endersys.itap.ui.module.user.LoginBean - *********commons log ************ 
^[[19~2012-01-05 17:11:43,561 [http-8080-3] ERROR com.endersys.itap.ui.module.user.LoginBean - **************sl4j log ************** 
2012-01-05 17:11:44,433 [http-8080-3] FATAL com.endersys.itap.ui.module.user.LoginBean - **************log4j log************** 






    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>1.6.4</version> 
    </dependency> 

     <!--java util to slf4j bridge --> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>jul-to-slf4j</artifactId> 
     <version>1.6.4</version> 
    </dependency> 


     <!--common logging to slf4j bridge --> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>jcl-over-slf4j</artifactId> 
     <version>1.6.4</version> 
    </dependency> 


     <!--sl4j to log4j bridge--> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.6.4</version> 
    </dependency> 
+0

你的pom中沒有log4j依賴關係嗎? – martin 2012-01-05 15:56:43

+0

@martin slf4j-log4j12依賴於log4j,所以它在我的類路徑中。 – ayengin 2012-01-05 17:14:35

+0

我使用的是tomcat,tomcat的日誌屬性是否可以導致這種情況? – ayengin 2012-01-05 17:16:25

回答

3

對於jul-to-slf4j僅僅將工件添加爲依賴關係是不夠的。除此之外,您需要通過調用SLF4JBridgeHandler.install()(在應用程序啓動期間的某處,例如在servlet上下文偵聽器中)以編程方式設置橋。

注1:jul-to-slf4j在Tomcat中運行良好,因爲Tomcat的JUL實現會創建每個應用程序記錄器名稱空間。但是,我不建議在任何其他應用程序服務器上使用它(除了那些具有類似於Tomcat的JUL實現的服務器)。注意2:你應該仔細閱讀SLF4JBridgeHandler的Javadoc來檢查你是否真的想使用它(甚至在Tomcat上)。