Загрузка Log4j.xml извне войны
В моем приложении iam с помощью Log4j для ведения журнала. В настоящее время я помещаю log4j.xml в WEB-INF/classes.
Ниже приведены конфигурации, которые я использую для загрузки файла log4j.xml.
<!-- language: xml -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
Теперь мне нужно поместить файл log4j.xml за пределы моего военного файла. Местоположение будет, скорее всего, JBOSS_HOME/server/default/deploy/settings. В директории настроек мне нужно поместить свой файл log4j.xml.
Я попытался загрузить его, установив путь класса jboss, отредактировав run.bat следующим образом
set JBOSS_CLASSPATH =% RUN_CLASSPATH%;% JBOSS_HOME%\server\default\deploy\settings
и я использовал ниже в web.xml
<!-- language: xml -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:/log4j.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
Но он бросает исключение при развертывании приложения. Исключение составляет
java.lang.IllegalArgumentException: Invalid 'log4jConfigLocation' parameter: class path resource [/log4j.xml] cannot be resolved to URL because it does not exist
Теперь мой вопрос: как я могу загрузить его.
Ответы
Ответ 1
Вы можете просто объявить местоположение конфигурации log4j следующим образом:
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>${JBOSS_HOME}/server/default/deploy/settings/log4j.xml</param-value>
</context-param>
Ответ 2
Не забудьте добавить "file://" перед пути, иначе он будет искать внутри папки webapp.
Следующий пример работает для меня.
<web-app>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>file://${MY_ENV_VAR}log4j.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
</web-app>
Ответ 3
У меня было то же исключение.
Я использовал этот код:
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
Это исключение исчезло при выполнении:
mvn clean install
Ответ 4
Вы можете использовать:
- Файл:///${MY_ENV_VAR}/log4j.xml
- Файл:///${JBOSS_HOME}/server/default/deploy/settings/log4j.xml
Внутри вашего тега log4jConfigLocation.
Обратите внимание на добавление файла:///, если путь является абсолютным (вне папки webapp)
Ответ 5
Вы можете установить его таким образом в файле web.xml:
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>file://${JBOSS_HOME}/domain/configuration/log4j.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
Примечание. Для среды Windows начинайте с двойного "/" как "file://". Для среды linux с sigle "/" like "file:/".
Ответ 6
Синтаксис log4j2 - это немного отличается: использует log4jConfiguration
param.
Обратитесь к этим ответам:
@rgoers
@Gowtham