0

我已经狩猎和阅读,我认为没有办法......但以防万一。

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

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

但我真的希望这些中的每一个都记录到一个单独的文件中。事实上,一切都转到 catalina.out。这是一个使用 log4j 和 slf4j 的 Spring 应用程序。我探索过的每条途径都让我无处可去。

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

有任何想法吗?

4

1 回答 1

0

您可以将 log4j.xml 文件放在 webapp 外部的某个位置,并使用 Tomcat 的 VirtualWebappLoader 为每个 webapps 加载不同的 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。

希望这可以帮助。

于 2013-07-17T01:19:55.443 回答