2010-11-22 153 views
2

我有一個web應用打包爲一個我在Jetty(6.1.25版本)中部署的戰爭。該Web應用程序使用log4j。我希望能夠通過戰爭外部的配置文件(即未燒入)配置webapp日誌記錄。使用Jetty和log4j設置外部webapp日誌記錄配置

我試過使用自定義上下文WebAppContext與一個額外的類路徑屬性指向我想要注入到webapp類路徑log4j.properties文件,但這並沒有工作。

<Configure class="org.mortbay.jetty.webapp.WebAppContext"> 
    <Set name="contextPath">/quantel</Set> 
    <Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/quantel</Set> 
    <Set name="extraClasspath">quantel/log4j.properties</Set> 
</Configure> 

我收到以下錯誤信息:

log4j:WARN No appenders could be found for logger (org.apache.commons.configuration.ConfigurationUtils). 
log4j:WARN Please initialize the log4j system properly. 

是否有可能與碼頭做到這一點?

在此先感謝。

回答

1

我調整了上面的xml配置,將包含log4j配置文件的文件夾添加到webapp classpath,而不是僅僅添加配置文件本身。它現在正在工作,但我不清楚爲什麼。

我的工作配置是這樣的:

<Configure class="org.mortbay.jetty.webapp.WebAppContext"> 
    <Set name="contextPath">/quantel</Set> 
    <Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/quantel</Set> 
    <Set name="extraClasspath"><SystemProperty name="jetty.home" default="."/>/quantel</Set> 
</Configure> 
+1

類路徑條目必須是目錄或jar文件。 log4j將查找類路徑中每個條目的log4j.properties文件。所以如果你把'quantel/log4j.properties'放在類路徑上,它會嘗試把它當作一個jar並在它內部尋找log4j.properties(這會失敗)。相反,如果將'quantel'放在類路徑中,它將在該目錄內查找log4j.properties。 – 2012-02-27 14:17:43