2013-07-16 41 views
0

我已經找到並閱讀了,而且我認爲沒有辦法......但爲了以防萬一。Tomcat上的相同webapp每個都有不同的log4j配置

我需要多次將相同的webapp部署到Tomcat,每個webapp都有一個指示要使用哪個數據庫的不同配置。我已經想出瞭如何在不修改war文件的內容的情況下做到這一點。

總之,我複製WebApp.jar到WebAppDB1.jar,WebAppDB2.jar和部署這些到web應用的文件夾,並使用自定義的上下文配置爲每個Tomcat中/ CONF /卡塔利娜/本地主機。所以我很好。

但我真的很希望每個這些登錄到一個單獨的文件。事實上,所有事情都發生在catalina.out上。這是一個使用log4j和slf4j的Spring應用程序。我探索過的每條大道都讓我無處可去。現在,我回到更新實際的war文件,進入WEB-INF/classes並更新log4j.xml,但這使它成爲一個手動過程。

任何想法?

回答

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

希望這會有所幫助。

+0

你,先生,太棒了!這工作很棒! – DaveyBob

相關問題