Tomcat上的相同webapp,每个都有不同的log4j配置

时间:2013-07-16 20:15:28

标签: spring tomcat log4j

我一直在寻找和阅读,我认为没有办法......但为了以防万一。

我需要多次将相同的webapp部署到Tomcat,每个都使用不同的配置来指示要使用的数据库。我已经想出了如何在不修改war文件内容的情况下做到这一点。

简而言之,我将WebApp.jar复制到WebAppDB1.jar,WebAppDB2.jar,并将它们部署到webapps文件夹,并在tomcat / conf / Catalina / localhost中为每个文件夹使用自定义上下文配置。所以我很擅长。

但我真的希望每个人都能登录到一个单独的文件。事实上,一切都进入了catalina.out。这是一个使用log4j和slf4j的Spring应用程序。我探索过的每条大道都让我无处可去。

现在,我回来更新实际的war文件,进入WEB-INF / classes并更新log4j.xml,但这使它成为一个手动过程。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以将log4j.xml文件放在webapp外部的某个位置,并使用Tomcat的VirtualWebappLoader为每个webapp加载不同的log4.xml。

http://tomcat.apache.org/tomcat-7.0-doc/config/loader.html#VirtualWebappLoader_Implementation

看起来像这样。

$ {CATALINA_BASE} /conf/Catalina/localhost/WebAppDB1.xml:

<Context docBase="..." >
  <Loader className="org.apache.catalina.loader.VirtualWebappLoader" virtualClasspath="/somewhere/WebAppDB1" />
</Context>

$ {CATALINA_BASE} /conf/Catalina/localhost/WebAppDB2.xml:

<Context docBase="..." >
  <Loader className="org.apache.catalina.loader.VirtualWebappLoader" virtualClasspath="/somewhere/WebAppDB2" />
</Context>

然后将log4j.xml文件放入/ somewhere / WebAppDB1和/ somewhere / WebAppDB2。

希望这有帮助。