С jul-to-slf4j WildFly регистрирует неформатированные сообщения

Наше приложение работает в WildFly, но мы используем пользовательские журналы, поэтому в jboss-deployment-structure.xml Есть эти строки:

<exclude-subsystems>
  <subsystem name="logging"/>
</exclude-subsystems>

Мы используем SLF4j с бэкэндом Logback, поэтому зависимости проекта (в формате Gradle) включают в себя:

compile 'org.slf4j:slf4j-api:1.7.12'
compile 'ch.qos.logback:logback-classic:1.1.3'
compile 'org.slf4j:jcl-over-slf4j:1.7.12'

Недавно я добавил еще одну библиотеку, которая использует java.util.logging а не SLF4j, так что его журналы просто пойдут на стандартный вывод. Чтобы решить эту проблему, я добавил еще одну зависимость:

compile 'org.slf4j:jul-to-slf4j:1.7.12'

и добавил следующие две строки кода Java в код инициализации приложения:

SLF4JBridgeHandler.removeHandlersForRootLogger ();
SLF4JBridgeHandler.install ();

Теперь эта библиотека тоже хорошо регистрируется.

Но появилась другая проблема: теперь сообщения WildFly также записываются в наш журнал (кажется, что он также использует java.util.logging). Это не так плохо, как есть (даже если мы предпочитаем разделять журналы приложений и веб-серверов), но они приходят не отформатированными, с не преобразованными заполнителями. Например, до jul-to-slf4j Кроме того, WildFly будет регистрировать это сообщение:

[...] UT005023: Запрос на обработку исключений в /Main.html

но теперь я вместо этого вижу это:

[...] UT005023: Запрос на обработку исключений для%s

Нужно ли добавить дополнительную конфигурацию, чтобы jul-to-slf4j можно правильно отформатировать сообщения? Или есть какое-то принципиальное ограничение при обработке сообщений с параметрами?

2 ответа

Хммм... похоже, что Wildfly (конечно, версия 8+) использует протоколирование JBoss. Насколько я могу судить, вход в систему Jboss является еще одной оболочкой для ведения журнала.

Он должен быть настроен на нажатие на JUL.

Из моего прочтения исходного кода похоже, что он также поддерживает push-сообщения на slf4j...

Так что вы должны выяснить, как указать Jboss, входящему в wildfly, войти в slf4j.

Хотели ли вы использовать профиль ведения журнала, как описано здесь: https://docs.jboss.org/author/display/WFLY8/Logging+Configuration?

Manifest-версия: 1.0 Logging-профиль: ejbs

Другие вопросы по тегам