Загрузка Log4j.xml извне для войны - PullRequest
10 голосов
/ 26 октября 2010

В моем приложении я использую Log4j для ведения журнала. В настоящее время я помещаю log4j.xml в классы WEB-INF /. Ниже приведены конфигурации, которые я использую для загрузки файла 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 вне моего файла war. Расположение, скорее всего, будет 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

Теперь мой вопрос, как я могу загрузить его.

Ответы [ 6 ]

10 голосов
/ 22 марта 2012

Не забудьте добавить «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>
6 голосов
/ 11 марта 2014

У меня было то же исключение.

Я использовал этот код:

<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

5 голосов
/ 26 октября 2010

Вы можете просто объявить местоположение конфигурации log4j следующим образом:

<context-param>
      <param-name>log4jConfigLocation</param-name>
     <param-value>${JBOSS_HOME}/server/default/deploy/settings/log4j.xml</param-value>
</context-param>
0 голосов
/ 15 мая 2017

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

0 голосов
/ 20 июля 2016

Вы можете установить его следующим образом в файле 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: /".

0 голосов
/ 12 ноября 2014

Вы можете использовать:

  • Файл: /// $ {MY_ENV_VAR} /log4j.xml
  • Файл: /// $ {JBOSS_HOME} /server/default/deploy/settings/log4j.xml

Внутри вашего log4jConfigLocation тега.

Обратите внимание на добавление файла: /// , если путь абсолютный (вне папки webapp )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...