2010-11-22 4 views
2

Ich habe eine Webapp als Krieg verpackt, die ich in Jetty (Version 6.1.25) bereitstellen. Die Web-App nutzt log4j. Ich möchte in der Lage sein, die Webapp-Logging über eine Konfigurationsdatei zu konfigurieren, die außerhalb des Krieges ist (d. H. Nicht eingebrannt).Einstellung der externen Webapp-Logging-Konfiguration mit Jetty und log4j

Ich habe versucht, einen benutzerdefinierten Kontext WebAppContext mit einer zusätzlichen Klassenpfadeigenschaft zu verwenden, die auf die Datei log4j.properties verweist, die ich in den Klassenpfad webapp injizieren möchte. Dies hat jedoch nicht funktioniert.

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

Ich erhalte die folgende Fehlermeldung:

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

Ist es möglich, dies mit Jetty zu tun?

Vielen Dank im Voraus.

Antwort

1

Ich habe die obige XML-Konfiguration angepasst, um den Ordner mit der log4j-Konfigurationsdatei zum webapp-Klassenpfad hinzuzufügen, anstatt nur die Konfigurationsdatei selbst hinzuzufügen. Es funktioniert jetzt, aber mir ist nicht klar warum.

Meine Arbeitskonfiguration wie folgt aussieht:

<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

Classpath Einträge entweder Verzeichnisse oder Gläser sein. log4j sucht nach der Datei log4j.properties INSIDE für jeden Eintrag im Klassenpfad. Wenn Sie also 'quantel/log4j.properties' auf den Klassenpfad setzen, versucht es, es als ein jar zu behandeln und darin nach log4j.properties zu suchen (was fehlschlägt). Wenn Sie "quantel" auf den Klassenpfad setzen, wird stattdessen nach log4j.properties in diesem Verzeichnis gesucht. –