Загрузка 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

Синтаксис - это немного отличается: использует log4jConfiguration param. Обратитесь к этим ответам: @rgoers @Gowtham