Я пытаюсь установить log4j 2 в веб-приложении.Я добавляю в свой web.xml эти строки
<context-param>
<param-name>isLog4jAutoInitializationDisabled</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>isLog4jContextSelectorNamed</param-name>
<param-value>false</param-value>
</context-param>
<listener><listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class></listener>
и
<filter><filter-name>log4jServletFilter</filter-name><filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class></filter><filter-mapping><filter-name>log4jServletFilter</filter-name><url-pattern>/*</url-pattern><dispatcher>REQUEST</dispatcher><dispatcher>FORWARD</dispatcher><dispatcher>INCLUDE</dispatcher><dispatcher>ERROR</dispatcher><dispatcher>ASYNC</dispatcher></filter-mapping>
, как указано здесь https://logging.apache.org/log4j/2.x/manual/webapp.html
У меня установлено отображаемое имя
<display-name>MYAPP</display-name>
в web.xml
, и я в
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
.
Я включаю в свой WEB-INF этот log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="debug" strict="true" monitorInterval="30" xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="${application.conf.dir}/MYAPP/log4j2.xml"/>
</Configuration>
Файл в $ {application.conf.dir} /MYAPP/log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Appenders>
<RollingFile name="A3_MYAPP" fileName="${sys:application.log.dir}/MYAPP/MYAPP.log"
filePattern="${sys:application.log.dir}/MYAPP/MYAPP_%d{yyyy-MM-dd}.%i.log.bz2">
<PatternLayout>
<Pattern>%d{yyyy/MM/dd HH:mm:ss,SSS} [%p] - %m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
<DefaultRolloverStrategy fileIndex="nomax">
<Delete basePath="${sys:application.log.dir}/MYAPP/">
<IfAny>
<IfAccumulatedFileSize exceeds="100 MB" />
<IfLastModified age="30d" />
</IfAny>>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="MYAPP" additivity="false" level="debug">
<AppenderRef ref="A3_MYAPP"/>
</Logger>
</Loggers>
При развертывании webapp я получаю эту ошибку:
07: 10: 54,792 ОШИБКА [stderr] (Пул потоков ServerService - 151) [Предупреждение] log4j2.xml: 5: 68: Не удалось включить операцию, возвращаясь к резервному.Ошибка чтения файла в формате XML (href = '$% 7Bapplication.conf.dir% 7D / MYAPP / log4j2.xml').Причина: C: \ wildfly-14.0.1.Final \ standalone \ tmp \ vfs \ temp \ temp96a1091798388092 \ content-1f986d8fa374ea35 \ WEB-INF \ $ {application.conf.dir} \ MYAPP \ log4j2.xml (Невозможно проделать ил percorso)specificato)
, поскольку в C: \ wildfly-14.0.1 нет файла .Final \ standalone \ tmp \ vfs \ temp \ temp96a1091798388092 \ content-1f986d8fa374ea35 \ WEB-INF \ $ {application.conf.dir}\ MYAPP \ log4j2.xml
Мне кажется, что в xi href замена системной переменной не производилась, она остается href = '$% 7Bapplication.conf.dir% 7D / MYAPP / log4j2.xml'
Я даже пытался написать
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="debug" strict="true" monitorInterval="30" xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="${sys:application.conf.dir}/MYAPP/log4j2.xml"/>
</Configuration>
, чтобы получить эту ошибку: 08: 39: 05,946 ОШИБКА [stderr] (Пул потоков ServerService - 93) [Неустранимая ошибка] log4j2.xml: 5:72: значение атрибута 'href' '$% 7Bsys: application.conf.dir% 7D / ADR_datex2 / log4j2.xml' синтаксически недопустимо.После применения экранирующих правил значение не является ни синтаксически правильным URI, ни IRI.
Поэтому мой вопрос: как я могу разрешить моему веб-приложению использовать внешний файл log4j2.xml с помощью модуля log4j-web, чтобы изменить его соответствующим образоммоим желаниям?Возможно ли это с помощью xi: include использовать замену системных свойств среды системы / java?
Заранее спасибо
ps это свойства системы java при запуске
Setting JAVA property to "C:\PROGRA~1\Java\JDK-11~1.2\\bin\java"
===============================================================================
JBoss Bootstrap Environment
JBOSS_HOME: "C:\wildfly-14.0.1.Final"
JAVA: "C:\PROGRA~1\Java\JDK-11~1.2\\bin\java"
JAVA_OPTS: "-Dprogram.name=standalone.bat -server -Duser.timezone=America/Santiago -Duser.country=CL -Duser.language=en -Dlog4j.debug=true -Dapplication.conf.dir=/prd/tps/conf/-Djboss.userconf.dir=/prd/tps/conf/ -Dapplication.log.dir=/tmp/log/-Djboss.userlog.dir=/tmp/log/ -Dapplication.data.dir=/prd/tps/data/ --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED --add-exports=jdk.unsupported/sun.reflect=ALL-UNNAMED --add-modules=java.se"
===============================================================================