gpt4 book ai didi

spring - Tomcat 上的相同 Web 应用程序,每个应用程序具有不同的 log4j 配置

转载 作者:行者123 更新时间:2023-11-28 23:42:52 24 4
gpt4 key购买 nike

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

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

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

但我真的很想将其中的每一个都记录到一个单独的文件中。实际上,所有内容都转到 catalina.out。这是一个使用 log4j 和 slf4j 的 Spring 应用程序。我探索过的每条道路都让我一无所获。

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

有什么想法吗?

最佳答案

您可以将 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。

希望这对您有所帮助。

关于spring - Tomcat 上的相同 Web 应用程序,每个应用程序具有不同的 log4j 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17686134/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com