2011-10-07 4 views
1

J'ai un projet qui est à son tour utilisé par plusieurs autres projets. Je veux log4j pour enregistrer seulement mes journaux dans un fichier que j'ai spécifié dans le fichier de propriétés. Les autres projets utilisent leurs propres mécanismes de journalisation et je n'ai aucun contrôle sur eux. Mes fichiers log4j ne devraient pas affecter la journalisation d'un autre projet. Comment dois-je configurer mon fichier de propriétés log4j? Jusqu'à présent, ce que je fais est log4j.rootLogger = ERROR et pour mon module log4j.logger.com.xyz.myproject = INFO, FILE. Cela fonctionnera-t-il sans affecter les enregistreurs d'autres projets? Ou peut-être limiter la journalisation à seulement mon pot?Limiter l'enregistrement à un seul fichier log4j

Merci

Répondre

2

Il dépend de la structure de l'emballage des autres projets. En supposant que

  • enregistreurs d'autres projets sont créés par Logger.getLogger(ClassA.class) ET
  • certains d'entre eux dépendent de la configuration de l'enregistreur racine (ont pas log4j.category.loggerName spécifiques Paramètres et
  • ces projets contiennent des sous-paquets du paquet utilisés par votre projet (à savoir l'ensemble de votre projet est com.abc.def et d'autres projets ont des paquets plus profondément dans la hiérarchie com.abc.def.ghi ALORS

changer com.abc.def logg niveau de développement affecterait d'autres projets - ils commenceront à se connecter au niveau défini par com.abc.def.

Vérifiez que ce n'est pas le cas et que vous devriez être en sécurité.

+0

Juste confirmation, les trois conditions doivent être satisfaites? –

+0

@VarunAchar Oui, exactement comme "ANDs" suggèrent :) Je perçois le cas que j'ai décrit comme le plus susceptible d'exister, mais sûrement on pourrait concevoir des schémas d'exploitation inhabituels qui entreraient en conflit avec votre approche. – MaDa

1

je suppose que votre pot est entièrement contenu dans votre propre paquet (ex com.foo.mypackage). Dans ce cas, est juste assez pour ajouter à votre configuration log4j quelque chose comme:

# Print only messages of priority WARN or above in the package com.foo 
log4j.category.com.foo=WARN 
# Print only messages of priority DEBUG or above in the package com.foo.mypackage 
log4j.category.com.foo.mypackage=DEBUG 

Cordialement,

M.

Questions connexes