0

我有一个使用 java.util 日志记录的应用程序,该应用程序使用的库使用不同的日志记录框架,例如 sl4j、jcl、log4j。现在我想将所有日志重定向到 log4j,以便我可以完全控制它。所以我添加了这个如此建议对我的 pom 的依赖。并 使用不同的记录器进行记录,如下所示。为什么 util log 不存在于 output 中

               _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>
4

1 回答 1

4

因为jul-to-slf4j仅仅将工件添加为依赖项是不够的。除此之外,您需要通过调用SLF4JBridgeHandler.install()(在应用程序启动期间的某个地方,例如在 servlet 上下文侦听器中)以编程方式设置桥接器。

注意 1:jul-to-slf4j在 Tomcat 中运行良好,因为 Tomcat 的 JUL 实现创建了每个应用程序的记录器命名空间。但是,我不建议在任何其他应用程序服务器上使用它(除了那些具有类似于 Tomcat 的 JUL 实现的服务器)。

注意 2:您应该仔细阅读 SLF4JBridgeHandler 的 Javadoc 以检查您是否真的想使用它(即使在 Tomcat 上)。

于 2012-01-11T22:48:02.700 回答