Я пытаюсь настроить Log4j2 на выбор местоположения файла конфигурации из файла свойств за пределами развернутого .war. Мне нужно указать расположение файла внешнего свойства во время выполнения, поэтому я передаю следующий аргумент -D моему Tomcat:
-Dapplication.home=file:///C:/dev/env1-home
У меня есть файл application.properties в каталоге env1-home, указанном вышеи различные свойства улавливаются пружинным контейнером и используются на протяжении всего применения. Одним из свойств является:
application.log4j.config=C:/dev/env1-home/log4j2.xml
Я хотел бы передать это свойство файла приложения в параметр контекста в файле web.xml, но следующее значение в файле web.xml:
<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>$${sys:application.log4j.config}</param-value>
</context-param>
Дает мне следующую ошибку:
ERROR StatusLogger Unable to access file:/C:/dev/Tomcat/apache-tomcat-8.5.31-8090/bin/$%7Bsys:application.log4j.config%7D
java.io.FileNotFoundException: C:\dev\Tomcat\apache-tomcat-8.5.31-8090\bin\${sys:application.log4j.config} (The system cannot find the file specified)
...