Как заставить Log4J2 работать в JBoss EAP 6.4 - PullRequest
0 голосов
/ 13 декабря 2018

Я видел успешный онлайн-экземпляр, чтобы Log4J2 работал в JBoss EAP 6.x

Мой локальный файл войны имеет особую ситуацию (JBoss EAP 6.4, JDK8):

  1. Война построена на основе Spring 3, где большая часть журналирования выполняется с помощью Apache Common Logging
  2. Регистрация исходного кода в войне осуществляется с помощью Slf4J
  3. Однако некоторые внутренние зависимости вWEB-INF/lib по-прежнему выполняется Log4J 1.2, а не slf4J

Поэтому я добавил следующую зависимость от проекта, указанную ниже (перечисляйте только файл jar вместо подробного pom xml):

### spring framework from jcl to slf4j
jcl-over-slf4j-1.7.25.jar

### slf4j to log4j 1.2 then to log4j2
slf4j-log4j12-1.7.25.jar
log4j-1.2-api-2.11.1.jar

### slf4j to log4j 2
slf4j-api-1.7.25.jar
slf4j-simple-1.7.25.jar
log4j-api-2.8.2.jar
log4j-core-2.8.2.jar
log4j-slf4j-impl-2.8.jar

Мой план состоит в том, чтобы EAP 6.4 никогда не использовать какой-либо модуль журналирования от JBoss, вместо этого просто используйте все, что предоставляется в этой войне, поэтому в jboss-deployment-structure.xml я создаю следующие элементы

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
    <deployment>
        <exclude-subsystems>
            <subsystem name="logging" />
        </exclude-subsystems>
        <dependencies>
            <module name="oracle" />
        </dependencies>
        <exclusions>
            <module name="org.apache.log4j" />
            <module name="org.apache.commons.logging" />
            <module name="org.jboss.logging" />
            <module name="org.jboss.logging.jul-to-slf4j-stub" />
            <module name="org.jboss.logmanager" />
            <module name="org.jboss.logmanager.log4j" />
            <module name="org.slf4j" />
            <module name='org.slf4j.impl' />
            <module name='org.slf4j.jcl-over-slf4j' />
        </exclusions>
    </deployment>
</jboss-deployment-structure>

И когда приложение запускается, я вижу следующую информацию, отображаемую в журнале сервера, извлеченную здесь

Adding resource "/C:/Windows/content/MyApp.war/WEB-INF/lib/jcl-over-slf4j-1.7.25.jar" to module deployment.MyApp.war:main

Adding resource "/C:/Windows/content/MyApp.war/WEB-INF/lib/slf4j-log4j12-1.7.25.jar" to module deployment.MyApp.war:main
Adding resource "/C:/Windows/content/MyApp.war/WEB-INF/lib/slf4j-api-1.7.25.jar" to module deployment.MyApp.war:main
Adding resource "/C:/Windows/content/MyApp.war/WEB-INF/lib/slf4j-simple-1.7.25.jar" to module deployment.MyApp.war:main

Adding resource "/C:/Windows/content/MyApp.war/WEB-INF/lib/log4j-1.2-api-2.11.1.jar" to module deployment.MyApp.war:main
Adding resource "/C:/Windows/content/MyApp.war/WEB-INF/lib/log4j-api-2.8.2.jar" to module deployment.MyApp.war:main
Adding resource "/C:/Windows/content/MyApp.war/WEB-INF/lib/log4j-core-2.8.2.jar" to module deployment.MyApp.war:main
Adding resource "/C:/Windows/content/MyApp.war/WEB-INF/lib/log4j-slf4j-impl-2.8.jar" to module deployment.MyApp.war:main

нет дополнительной информации относительно регистрации в журнале сервера, нет ошибки.

Однако независимо от того, хоI Я настраиваю приложение журнала (ROL или Console), журнал log4J не создается.Я использую FileAppender, но файл журнала не создается.

Я не думаю, что это вызвано проблемой конфигурации log4J, потому что тот же самый файл war с тем же log4J2.xml отлично выводит запись в Tomcat 8

Как я могу сделать это правильно, чтобы по крайней мере успешное ведение журнала вывода приложения.

1 Ответ

0 голосов
/ 13 декабря 2018

В ваших зависимостях есть несколько привязок SLF4J:

  1. slf4j-simple-1.7.25.jar
  2. slf4j-log4j12-1.7.25.jar
  3. log4j-slf4j-impl-2.8.jar

Действие 1: Удалите slf4j-simple и выберите один из slf4j-log4j12 или log4j-slf4j-impl .

Кроме того, ДВА зависимости API для log4j выглядят подозрительно:

  1. log4j-1.2-api-2.11.1.jar
  2. log4j-api-2.8.2.jar

Действие 2: Удалите log4j-1.2-api-2.11.1.jar, поскольку вы используете версию 2.8.2 из log4j.

...