Comment créer différents fichiers journaux pour différents paquets en utilisant le même log4j logger?
Je suis en train de configurer des fichiers journaux distincts pour les différents forfaits. Je suis à l'aide d'une classe Wrapper pour un log4j
enregistreur. Chaque classe dans mon application appelle même classe wrapper. Ma classe wrapper:
public class MyLogger
{
private static Logger logger = Logger.getLogger(MyLogger.class.getName());
....
....
}
Il est appelé comme ceci:
MyLogger.write(, , );
Est-il un moyen de configurer log4j, de sorte qu'il génère de la journalisation des paquets différents pour différents fichiers?
Merci!
Edit:
Voici mon log4j.properties
fichier:
log4j.rootLogger=DEBUG, infoout, aar
log4j.logger.com.businessservice.datapopulation=DEBUG, aar
log4j.additivity.com.businessservice.datapopulation=false
log4j.appender.infoout = org.apache.log4j.RollingFileAppender
log4j.appender.infoout.file=/app/aar_frontend.log
log4j.appender.infoout.append=true
log4j.appender.infoout.Threshold=DEBUG
log4j.appender.infoout.MaxFileSize=2MB
log4j.appender.infoout.MaxBackupIndex=10
log4j.appender.infoout.layout = org.apache.log4j.PatternLayout
log4j.appender.infoout.layout.ConversionPattern = %m%n
log4j.appender.aar = org.apache.log4j.RollingFileAppender
log4j.appender.aar.file=/app/aar/aar_backend.log
log4j.appender.aar.append=true
log4j.appender.aar.Threshold=DEBUG
log4j.appender.aar.MaxFileSize=2MB
log4j.appender.aar.MaxBackupIndex=10
log4j.appender.aar.layout = org.apache.log4j.PatternLayout
log4j.appender.aar.layout.ConversionPattern = %m%n
source d'informationauteur HashimR
Vous devez vous connecter pour publier un commentaire.
Si vous créez un statique à l'intérieur de l'Enregistreur de MyLogger classe, alors vous avez un Enregistreur exemple, avec le nom de MyLogger. Lorsque vous appelez cette enregistreur à partir d'autres paquets, Log4j n'est pas en mesure de déterminer l'origine de ces appels, car ils utilisent le même Enregistreur de données.
La meilleure façon de le gérer, est de définir un Enregistreur séparé à l'intérieur de chaque classe, mais si vous voulez utiliser une classe comme un point de contact avec Log4j, alors vous pouvez faire ceci:
Puis, l'une de la classe à l'aide, il pourrait ressembler à:
Et la
log4j.properties
fichier devrait ressembler à:Si vous n'avez pas envie de passer à la Classe de ClassA, vous pouvez utiliser un mauvais tour à la réflexion, que devient l'appel de la classe de nom, mais je ne recommanderais pas qu'en raison de performances:
Vous pouvez le faire comme ça(com.myco.un et com.myco.b étant votre 2 paquets différents):
Acclamations.
La création de 2 appenders et 2 enregistreurs permettrait de faire ce que vous voulez.
Lire les fichier personnalisé emplacement à partir d'un fichier de propriétés pour chaque colis. Ensuite, vous pouvez utiliser la méthode donnée ci-dessous pour mettre à jour le fichier log4j emplacement situé dans le log4j fichier prop: