2011-12-28 117 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上)。