В моем текущем веб-приложении используется log4j 1.2, и я хотел бы перейти на log4j2, но я не смог понять, как справиться с моим конкретным вариантом использования.
В файле war моего веб-приложения я храню файл конфигурации log4j, который имеет разумные значения по умолчанию. Моя цель - поиск файла конфигурации, внешнего по отношению к файлу войны, который переопределил бы конфигурацию, связанную с войной. Таким образом, конфигурация ведения журнала настраивается во время развертывания и может быть разной для каждого сервера.
Используя log4j 1.2, это достигается через ServletContextListener следующим методом, и он отлично работает:
/**
* Configures system-wide log4j logging system with log4j.xml from the
* class path. This overrides configuration from the default location in
* Tomcat: WEB-INF/classes
*/
private void configureLog4J() {
URL url = ClassLoader.getSystemResource("log4j.xml");
if (url != null) {
DOMConfigurator.configure(url);
log = org.apache.log4j.LogManager.getLogger(LDSContextListener.class);
log.info("log4j.xml loaded from " + url);
}
}
Если я собираюсь перейти на log4j2, как я могу заменить внутренний файл конфигурацией из внешнего файла? log4j2 не имеет DOMConfigurator
в своем API.