Я видел успешный онлайн-экземпляр, чтобы Log4J2 работал в JBoss EAP 6.x
Мой локальный файл войны имеет особую ситуацию (JBoss EAP 6.4, JDK8):
- Война построена на основе Spring 3, где большая часть журналирования выполняется с помощью
Apache Common Logging
- Регистрация исходного кода в войне осуществляется с помощью
Slf4J
- Однако некоторые внутренние зависимости в
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
Как я могу сделать это правильно, чтобы по крайней мере успешное ведение журнала вывода приложения.