2010-10-13 31 views
8

Mon application utilise de nombreuses bibliothèques et j'utilise java.util.logging pour la journalisation. Je voudrais être en mesure de définir différents niveaux de journalisation pour chaque bibliothèque en faisant quelque chose comme:java.util.logging: comment paramétrer le niveau par logger (ou préfixe)?

org.datanucleus.*.level = WARNING 
com.google.apphosting.*.level = WARNING 
com.myapp.*.level = FINE 

Est-ce possible?

Répondre

0

Il aurait été agréable de contrôler l'enregistrement en utilisant uniquement logging.properties:

org = FINE 
com = SEVERE 

Malheureusement, le journal correspondant doit avoir été réellement créé. Changer votre fichier de configuration ne fonctionnera pas pour vous. Ajoutez les enregistreurs vous et il fonctionnera:

private static final Logger ORG_ROOT_LOGGER = Logger.getLogger("org"); 
private static final Logger COM_ROOT_LOGGER = Logger.getLogger("com"); 

emboîtées enregistreurs dans votre application fonctionnent de la même façon:

# perhaps in the main entry point for your application? 
private static final Logger APP_ROOT_LOGGER = Logger.getLogger("com.myapp"); 

# in each package or class you want to have separately controlled loggers 
private static final Logger LOG = Logger.getLogger(HelloWorldApp.class.getName()); 

# in logging.properties 
com.myapp.level = FINE # sufficient to make all your loggers log as FINE 
com.myapp.HelloWorldApp.level = SEVERE # turn off msgs from that particularly chatty app 
4

Vous ne devriez pas utiliser « * ». Un échantillon logging.properties pourrait être tel que:

handlers=java.util.logging.ConsoleHandler 
.level=ALL 

java.util.logging.ConsoleHandler.level = ALL 
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter 

org.datanucleus.level=WARNING 
org.datanucleus.handler=java.util.logging.ConsoleHandler 

com.myapp.level=FINE 
com.myapp.handler=java.util.logging.ConsoleHandler 

Et si tous les niveaux « org » doit être connecté comme AVERTISSEMENT puis

org.level=WARNING 
org.handler=java.util.logging.ConsoleHandler 
0

j'ai pu le faire fonctionner comme ceci:

handlers= java.util.logging.ConsoleHandler 

.level= INFO 

java.util.logging.ConsoleHandler.level = ALL 
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter 

com.myapp.level = ALL 
com.myapp.handler=java.util.logging.ConsoleHandler