使用SLF4J桥接JUL不起作用

时间:2014-11-04 15:06:46

标签: java slf4j logback java.util.logging

我目前正在观察第三方库(即javax.mail)正在使用java.util.logging。 javaMail的版本是1.4.7。 我想使用SLF4J LoggingFramwork将JUL桥接到logback。 slf4j api版本是:logback-core | 1.0.13
                           SLF4J的API | 1.7.5
                           七月到SLF4J | 1.7.5

在main函数中,我还通过调用以编程方式安装SLF4JBridgeHandler:

 // Optionally remove existing handlers attached to j.u.l root logger
   SLF4JBridgeHandler.removeHandlersForRootLogger();  

 // add SLF4JBridgeHandler to j.u.l's root logger, should be done once during
 // the initialization phase of your application
  SLF4JBridgeHandler.install();

但它确实有效,javaMail还会在我的控制台中记录调试信息。我的logbak.xml是

  <root level="INFO">
      <appender-ref ref="STDOUT" />
   </root>

有什么不对吗?

1 个答案:

答案 0 :(得分:0)

启用session调试后,JavaMail可以直接写入System.out。这可能是您看到控制台输出的原因。尝试将其转为off

    Session s = Session.getInstance(props);
    s.setDebug(false);

否则,您可以更改JavaMail记录器的logger level

java.util.logging.Logger.getLogger("javax.mail").setLevel(Level.WARNING);

根JavaMail记录器名称是&#39; javax.mail&#39;。有关更改记录器级别的其他方法,请参阅java.util.logging: how to set level by logger package (or prefix)?

JavaMail 1.3 FCS RELEASE是第一个支持通过输出流进行debuging的版本。通过default System.out作为默认调试流返回。 JavaMail 1.4.6是第一个适合使用java.util.logging的版本。旧版应用程序仍支持以前的行为。