从war文件外部加载log4j.xml

时间:2011-12-16 21:03:02

标签: spring log4j

对于我的spring应用程序,我要求将log4j.xml移到war文件之外。我一直在寻找解决方案,并找到了以下方法:

  1. org.springframework.web.util.Log4jConfigListener:由于未在tomcat上展开war,因此无效。
  2. 传递jvm属性(-Dlog.Localtion = ....):由于log4j文件是特定于应用程序的,我认为这不是一个好方法。
  3. 我想知道解决这个问题的最佳方法是什么。我相信Spring应该让它变得简单,只是我对此并不多。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您可以查看org.springframework.util.Log4jConfigurer。您可以将log4j.xml的位置传递给此类。它还负责解析属性占位符。

答案 2 :(得分:0)

您可以在web.xml中使用org.springframework.web.util.Log4jConfigListener - 只需添加以下元素:

<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>