2010-09-14 8 views
2

exigence est ce ...fichier externe log4j.xml pour WAR

Une question, le lieu habituel semble être dans votre/WEB-INF/classes, mais j'ai des problèmes avec that.if j'expédier mon application comme un fichier WAR, je ne peux pas y arriver pour l'éditer, ce qui est un vrai problème.

Nous avons notre 3 WAR, nous avons déployé des applications avec tomcat 6.0.16. Nous voulons configurer log4j.xml dans dir externe pour chaque guerre et chargé de là dynamiquement.

Je ne veux vraiment pas utiliser "-Dlog4j.configuration =/Directory/log4j.xml" ce paramètre env comme une solution. Parce que cela deviendra par défaut non spécifique à WAR.

Des suggestions? Toute aide appréciée ...

Répondre

1

Je sais que vous mentionnez que vous ne voulez pas utiliser le paramètre de démarrage "-Dlog4j.configuration =/Directory/log4j.xml" mais avez-vous envisagé d'utiliser un paramètre personnalisé comme

-DappOneLog4jConfig=/directoy/file1.xml 
-DappTwoLog4jconfig=/directory/file2.xml 

Ensuite, dans chacun de vos fichiers war, vous pouvez charger le fichier log4j que vous voulez. Vous pouvez faire quelque chose comme ça dans une classe qui est chargée au démarrage.

if(System.getProperty("appOneLog4jConfig") != null){ 
     PropertyConfigurator.configure(System.getProperty("appOneLog4jConfig")); 
} else { 
     BasicConfigurator.configure(); 
     Logger.getRootLogger().setLevel(Level.INFO); 
} 

qui dit si j'ai un fichier de propriétés spécifié, utilisez-le. sinon par défaut tout à Info. Cela devrait vous donner la liberté de définir un fichier log4j pour chaque application/fichier war

+0

ouais.Je sais que cela fonctionne bien, mais quelle est la meilleure pratique courante pour la configuration log4j pour plusieurs webapps. Ce que je veux vraiment, c'est que log4j.xml soit spécifique à webapp dans mes guerres (sans appender), et que communément log4j.xml soit placé au niveau de tomcat avec un appender, quand un log webapp1 arrive, il doit être connecté avec app1.log et pour Deuxièmement, il devrait être connecté avec app2.log. J'ai context.xml pour chaque webapp est là un moyen que je peux définir un param pour la valeur spécifique de l'application et obtenir la valeur au plus haut niveau log4j.xml comme ceci "" ????? – bubesh