Nous avons un environnement web j2ee. Le serveur est configuré pour partager des sessions et éventuellement des chargeurs de classe sur plusieurs applications Web. Fondamentalement, un classloader pourrait server plusieurs applications Web.LOG4J en tant que singleton, de toute façon pour éviter les conflits de journalisation log4j dans l'environnement Web
Cela semble causer des problèmes avec log4j. Différentes applications Web peuvent avoir des configurations log4j différentes, mais la consignation se déplace vers le même fichier. En lisant en ligne, il semble que log4j utilise beaucoup les singletons, en termes d'appenders et d'autres fonctionnalités.
Existe-t-il un moyen de séparer complètement les configurations log4j d'une application web de l'autre?
Serveur: websphere6 +
Log4j:
Java 1.4.2: 1,5
Example log4j.properties (webapp1):
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=/usr/local/file1.log
log4j.additivity.com.app=false
Example log4j.properties (webapp2):
log4j.appender.Z=org.apache.log4j.RollingFileAppender
log4j.appender.Z.File=/usr/local/file2.log
log4j.additivity.com.app=false
En ce moment, la connexion de webapp2 peut apparaître dans les journaux de webapp1 et vice versa. Nous ne le voulons pas.
Solution possible:
Il est peut-être possible d'ajouter un fichier personnalisé appender? Cela réglerait-il le problème et quel code ajouterais-je à l'appender personnalisé?
Est-il possible de changer l'initialisation de log4j? Par exemple, pourrais-je utiliser une servlet de démarrage pour charger logj4 pour chaque application web.
Ce n'est pas clair sur ce que vous voulez vraiment. Voulez-vous que plusieurs applications Web déployées sur le même serveur se connectent au même fichier? – Qwerky
Désolé, j'ai mis à jour mon message. Les journaux de webapp1 apparaîtront dans les journaux webapp2. Et je ne veux pas ça. Je suppose en raison de la nature singleton de log4j. –