Использование SLF4J для моста JUL не работает
В настоящее время я наблюдаю, что сторонняя библиотека (а именно javax.mail) использует java.util.logging. Версия javaMail - 1.4.7. Я хочу использовать SLF4J LoggingFramwork, чтобы соединить JUL для выхода из системы. версия API slf4j: logback-core|1.0.13
SLF4J-апи | 1.7.5
июль к SLF4J | 1.7.5
В основной функции я также устанавливаю 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 ответ
С включенной отладкой сеанса JavaMail может напрямую записывать в System.out. Возможно, именно поэтому вы видите вывод консоли. Попробуйте отключить его:
Session s = Session.getInstance(props);
s.setDebug(false);
В противном случае вы можете изменить уровень регистратора для регистраторов JavaMail.
java.util.logging.Logger.getLogger("javax.mail").setLevel(Level.WARNING);
Корневое имя регистратора JavaMail - "javax.mail". См. Java.util.logging: как установить уровень с помощью пакета (или префикса)? для других способов изменить уровень регистратора.
JavaMail 1.3 FCS RELEASE был первым выпуском, который поддерживал отладку через выходной поток. По умолчанию System.out возвращается в качестве потока отладки по умолчанию. JavaMail 1.4.6 был первым выпуском, который был адаптирован для использования java.util.logging. Предыдущее поведение все еще поддерживается для устаревших приложений.