2012-12-30 78 views
2

请帮助如何处理以下情况。如何在tomcat中为Web应用程序的外部文件夹配置log4j.properties

当前网络应用程序: 我已经把log4j.propertes在web应用/WEB-INF/classes文件夹中。

想实现:在外部位置 广场log4j.properties从我的web应用程序是指,这样我可以修改日志的位置当过,我想无需重新构建了战争。

$CATALINA_HOME/propdirwebapp1/log4j.properties $CATALINA_HOME/propdirwebapp2/log4j.properties

如果我已经部署请提出解决多个应用程序。如果只有一个应用程序部署在服务器上,请建议解决方案

回答

5

在我的情况下,在web.xml我补充Log4jConfigListener它的工作。 log4jRefreshInterval在这里是可选的。

<context-param> 
    <param-name>log4jConfigLocation</param-name> 
    <param-value>file:/<your-path-here>/log4j.properties</param-value> 
</context-param> 
<context-param> 
    <param-name>log4jRefreshInterval</param-name> 
    <!-- Refresh log4j configuration every 5 minutes. --> 
    <param-value>300000</param-value> 
</context-param> 

<listener> 
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 
</listener> 
0

没有必要重建war文件,而不是直接修改log4j.properties并重新启动tomcat。

+0

谢谢你的答案,但如果更改展开文件夹中它会覆盖在Tomcat重启的路径,只要一个你在web应用war文件夹不管,我觉得需要一些其他的方式处理。 – Azhar

+0

不,Tomcat不会在重新启动时更改分解文件夹,但是,我同意对分解文件夹的修改不是一种好的做法。 – Pavel

0

您可以将目录添加到$ CATALINA_BASE/conf/catalina.properties中的shared.loader属性中。

shared.loader=conf/myapp/ 

然后把log4j.properties放在这个目录下。

但是有两个限制。

1)如果在WEBINF/classes一个log4j.properties文件,一个将被装载第一

2)该目录被所有的webapps共享所以只能通过针对所有的webapps一个log4j.properties文件。

+0

这看起来很酷,但瓶颈是所有的webapps将共享相同的log4j。可能需要根据软件包配置日志并将日志推送到特定的日志文件才能解决问题。 :) 感谢您的答复。 – Azhar

相关问题