2010-11-22 30 views
2

J'ai une webapp empaquetée comme une guerre que je déploie dans Jetty (version 6.1.25). L'application Web utilise log4j. Je voudrais être en mesure de configurer la journalisation webapp via un fichier de configuration qui est externe à la guerre (c'est-à-dire non gravé).Définition d'une configuration de journalisation Webapp externe avec Jetty et log4j

J'ai essayé d'utiliser un contexte WebAppContext personnalisé avec une propriété de chemin de classe supplémentaire pointant vers le fichier log4j.properties que je souhaite injecter dans le chemin de classe webapp, mais cela n'a pas fonctionné.

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

je reçois le message d'erreur suivant:

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

Est-il possible de le faire avec la jetée?

Merci d'avance.

Répondre

1

J'ai ajusté la configuration de xml ci-dessus pour ajouter le dossier contenant le fichier de configuration log4j au classpath de la classe webapp, au lieu de simplement ajouter le fichier de configuration lui-même. Cela fonctionne maintenant, mais je ne comprends pas pourquoi.

Ma configuration de travail ressemble à:

<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

entrées de Classpath doivent être des répertoires ou des bocaux. log4j recherchera le fichier log4j.properties à l'intérieur de chaque entrée du chemin de classe. Donc, si vous mettez 'quantel/log4j.properties' sur le classpath, il va essayer de le traiter comme un jar et chercher log4j.properties à l'intérieur (ce qui échouera). Au lieu de cela, si vous mettez 'quantel' sur le classpath, il cherchera log4j.properties dans ce répertoire. –