Как я могу определить произвольный файл вне моего веб-приложения для настройки log4j2

#configuration #log4j2

#конфигурация #log4j2

Вопрос:

Мое веб-приложение будет развернуто на серверах приложений Weblogic в Windows и Linux / Unix в разных средах. Расположение файла журнала, добавляющие элементы и уровни журнала будут различаться в разных развертываниях, и мы хотели бы иметь возможность изменять конфигурацию ведения журнала во время выполнения (путем обмена файлом конфигурации), поэтому я не могу встроить log4j2.xml (или любого другого файла конфигурации) в моем развертывании. И поскольку я работаю на серверах приложений, которые я не могу контролировать, у меня нет возможности добавить переменные среды, указывающие на другое местоположение конфигурации.

В настоящее время мой log4j2.xml находится в пути к классу моего приложения и упаковывается в мой файл war. Есть ли какой-либо способ указать Log4J2 использовать файл конфигурации, например, относительно корня приложения (например, метод configureAndWatch (fileLocation) Log4J)?

Я нашел множество примеров того, как настроить Log4J2, но все, что я нашел о расположении файла конфигурации, указывает на путь к классу приложений.

Комментарии:

1. Вы могли бы попробовать написать свою собственную фабрику конфигурации

Ответ №1:

Я, наконец, нашел решение своей проблемы. Я добавил файл с именем

 log4j2.component.properties
  

для моего проекта (в src / main / resources). Этот файл содержит свойство, указывающее на местоположение моего файла конфигурации log4j2:

 log4j.configurationFile=.//path//on//my//application//server//someLog4j2ConfigFile.xml
  

Это заставляет log4j2 считывать этот файл и настраивать себя на основе его содержимого.