Comment faire pour configurer plusieurs log4j pour les différentes guerres dans une seule OREILLE?
J'ai une OREILLE avec des structures comme:
APP.ear
- APP1.war
- WEB-INF/classes/log4j.properties
- APP2.war
- WEB-INF/classes/log4j.properties
- app1-ejb.jar
- app2-ejb.jar
- log4j.jar
- spring.jar
- commons-lang.jar (...and other jar)
Je veux que chaque GUERRE pour avoir leur propre journal d'application. Mais il semble que la configuration ci-dessus ne fonctionne pas. Journal pour APP1 et APP2 va à APP1 du journal. Est-il de toute façon à créer des app journaux?
OriginalL'auteur jackysee | 2009-04-18
Vous devez vous connecter pour publier un commentaire.
Il s'avère que c'est impossible en raison du chargeur de classe. Le chargeur de classe de la hiérarchie, c'est comme:
Application du chargeur de classe -> Ejb chargeur de classe -> la guerre du chargeur de classe
D'avoir un sepearte journal pour chaque guerre, on peut mettre log4j.jar à l'intérieur de la guerre et de laisser le log4j utilise la guerre du chargeur de classe. Mais comme les deux app1-ejb.jar et app2-ebj.jar également besoin d'utiliser log4j, l'log4j.jar ne peut être placé au plus haut niveau. Ainsi, le log4j est sur demande du chargeur de classes de niveau.
Je peux spécifier un seul log4j config pour le journal de paquets différentes pour les différents fichiers. Mais pour le commun de la bibliothèque comme le printemps, le journal ne peut pas être sepearted.
OriginalL'auteur jackysee
La raison pour laquelle il n'a pas fonctionné parce que le log4j est présent à la racine de l'emplacement, au lieu de laisser chaque guerre ont un Log4j.jar dans sa WEB-INF/lib et retirer le log4j.jar à partir de la racine.
Pour plus d'informations, reportez-vous à mon article de blog sur ce
http://techcrawler.wordpress.com/
OriginalL'auteur Sudhakar
Vous pouvez aussi le faire par l'évolution dynamique de la propriété de FICHIER dans le fichier de propriétés à l'aide de la PropertyConfigurator dans le code.
OriginalL'auteur
Logback est une solution viable pour résoudre ce problème. Après avoir regarder autour de différents hacks pour faire ce travail avec log4j, nous avons décidé de passer à Logback. J'ai utilisé la configuration suivante avec Logback pot à l'intérieur de la webapp.
Un Logback fichier à l'intérieur de la webapp qui inclure un fichier externe:
${logback.configuration.filepath}
est remplacé au cours de Maven filtrage par le chemin exact de l'extérieur de la webapp du fichier de configuration (quelque chose comme /opt/serveur/conf/loback.inclus.conf).Et ensuite, le contenu de la
logback.included.conf
(ce fichier fait partie de la projetct, livré avecbuild-helper:attach-artifact
, donc${project.artifactId}
est également remplacées au cours de Maven filtrage):Seule limitation, le contenu du fichier inclus doit être compatible avec celui de l'englobant. Juste les règles d'écriture en fait.
OriginalL'auteur PomCompot