2010-11-27 4 views
5

J'ai un programme Java utilisant une bibliothèque externe. Le programme principal utilise log4j pour enregistrer ses messages et la bibliothèque utilise java.util.logging.Comment rediriger java.util.logging dans un fichier?

Mon problème est que les messages de journal de la bibliothèque externe et du programme principal sont mélangés dans la console.

Je voudrais rediriger tous les messages de de la bibliothèque externe dans un fichier. J'ai essayé de le faire avec un fichier logging.properties:

handlers= java.util.logging.FileHandler 
.level= INFO 
java.util.logging.FileHandler.pattern = foo.log 
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter 

Ce fichier est initialisé avec:

System.setProperty("java.util.logging.config.file", "logging.properties"); 

Malheureusement, les messages du journal de la bibliothèque externe apparaissant dans la garder console. Devrais-je utiliser quelque chose comme slf4j pour intercepter des messages de journal de java.util.logging?

Nous vous remercions de votre temps.

+0

copie de http://stackoverflow.com/questions/751736/how-to-get-java-logger-output-to-file-by-default –

Répondre

11

Voici du code d'un de mes programmes. Cela fait aussi une rotation automatique. La classe config est la mienne qui est lue à partir d'un fichier de propriétés. Vous pouvez simplement remplacer cela par vos propres valeurs.

Logger rootLogger = Logger.getLogger(""); 
logHandler = new FileHandler(config.getLogFile(), 
          config.getLogRotateSize()*1024*1024, 
          config.getLogRotateCount(), false); 
logHandler.setFormatter(new SimpleFormatter()); 
logHandler.setLevel(Level.INFO); 
rootLogger.removeHandler(rootLogger.getHandlers()[0]); 
rootLogger.setLevel(Level.INFO); 
rootLogger.addHandler(logHandler); 

Notez que ceci est pour un programme autonome. Tout serveur d'applications possède ses propres outils de configuration de journalisation. Le programme peut également changer le formateur et les niveaux à la volée si un mode de débogage dynamique est désiré.

+0

Wow merci, cela a fonctionné parfaitement! – gulbrandr

Questions connexes