2011-12-16 2 views
0

Для моего приложения весны у меня есть требование переместить log4j.xml за пределами файла войны. Я искал решение, и найден следующие способами:Загрузка log4j.xml из-за пределов военного файла

  1. org.springframework.web.util.Log4jConfigListener: это не работает, как война не расширена на коте.
  2. Передача свойства jvm (-Dlog.Localtion = ....): Поскольку файл log4j является специфичным для приложения, я не думаю, что это хороший способ сделать это.

Мне интересно, что является лучшим способом решить эту проблему. Я считаю, что весна должна облегчить ситуацию, я просто не очень люблю это.

ответ

0

Вы можете проверить org.springframework.util.Log4jConfigurer. Вы можете передать местоположение log4j.xml этому классу. Он также позаботится о разрешении владельцев мест собственности.

0

Вы можете использовать org.springframework.web.util.Log4jConfigListener в вашем web.xml - просто добавить эти элементы:

<listener> 
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 
</listener> 
<context-param> 
    <param-name>log4jConfigLocation</param-name> 
    <param-value>../path/to/config</param-value> 
</context-param> 
+1

Log4jConfigListener работает только при расширении WAR-файла на tomcat, поэтому для меня это не работает, поскольку WAR-файл не расширен на сервере. – user1086518

2

Вы можете указать местоположение вашего log4j.xml в вашем конфигурационном файле контекста:

<bean id="log4jInitialization" 
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
    <property name="targetClass" 
     value="org.springframework.util.Log4jConfigurer" /> 
    <property name="targetMethod" value="initLogging" /> 
    <property name="arguments"> 
     <list> 
     <value>/any/path/log4j.xml</value> 
     </list> 
    </property> 
</bean> 

Источник http://helpdesk.objects.com.au/java/how-to-specify-log4j-configuration-in-spring-application

Смежные вопросы