#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 считывать этот файл и настраивать себя на основе его содержимого.