我有一个使用java.util日志记录的应用程序,这个应用程序使用的库使用不同的日志框架,如sl4j,jcl,log4j。现在我想将所有日志重定向到log4j,这样我就可以完全控制它了。所以我将此依赖项添加到我的pom中this建议。并使用不同的记录器进行日志记录,如下所示。为什么util log不在输出中。
_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 :(得分:4)
对于jul-to-slf4j
,仅仅将工件添加为依赖项是不够的。除此之外,您还需要通过调用SLF4JBridgeHandler.install()
(在应用程序启动期间的某个位置,例如在servlet上下文侦听器中)以编程方式设置桥。
注1:jul-to-slf4j
在Tomcat中运行良好,因为Tomcat的JUL实现创建了每个应用程序的logger名称空间。但是,我不建议在任何其他应用程序服务器上使用它(除了那些具有类似于Tomcat的JUL实现的服务器)。
注意2:您应该仔细阅读SLF4JBridgeHandler的Javadoc以检查您是否真的想要使用它(即使在Tomcat上)。