Bonjour,
j utilise l'api logging pour logger des informations, et je les sauvegarde dans un fichier xml. Je voudrais desactiver l'affichage de ces logs dans la console. Comment faire?
Merci
Version imprimable
Bonjour,
j utilise l'api logging pour logger des informations, et je les sauvegarde dans un fichier xml. Je voudrais desactiver l'affichage de ces logs dans la console. Comment faire?
Merci
Quelle API de logging utilises-tu ? java.util.logging ? log4j ? autre ?
j utilises java.util.logging
Tu dois donc désactiver le ConsoleHandler pour tes loggers. Si tu initialises la log avec le fichier de propriété standard, il te suffit de supprimer le ConsoleHandler de la liste des handlers installés. Il te suffit donc de remplacer la ligneCitation:
Envoyé par flipper203
parCode:handlers=java.util.logging.ConsoleHandler,java.util.logging.FileHandler
ceci en supposant que tu utilises le FileHandler pour écrire dans ton fichier XML.Code:handlers=java.util.logging.FileHandler
Sinon si tu configure tes loggers de façon programmatique, supprime le ConsoleHandler de la liste des Handlers.
Au passage j'ai posté sur mon blog une entrée concernant l'utilisation d'un formatter pour l'API java.util.logging qui permet de paramétrer les loggers avec des informations du stylequi produit un output du typeCode:org.mycompany.myapp.msg-format={%S}-[{%l}] {%m}\n
Plus d'infos sur mon blog.Code:
1
2
3
4
5
6 1154676830765-[FINER] it is a dummy message 1154676830765-[FINE] fake message 1154676830765-[WARNING] fake NPE message java.lang.NullPointerException: hey it's a fake NPE at fr.brouillard.util.logging.LogTester.<init>(LogTester.java:35) at fr.brouillard.util.logging.LogTester.main(LogTester.java:64)
Matthieu BROUILLARD
Mais comment on fait pour supprimer la console de la liste des handlers en prog, je me doute que c est avec la fonction removeHandler, mais comment j identifie le ConsoleHandler de mon file handler?
Quand je fais un getHandlers, il ne me retourne que mon file handler ...
Poste un petit bout de code de ce que tu fais, ça aidera à aller plus vite.
PS : est-ce que tu as essayé de supprimer le ConsoleHandler du fichier par défaut : JR_HOME/lib/logging.properties ?
Je prefere le faire par programmation plutot que par fichier de config.Code:
1
2
3
4
5
6
7
8
9
10 logger.addHandler(fh); fh.setFormatter(new LogXMLFormatter()); try { System.out.println("Handler 1: " + logger.getHandlers()[0].toString()); System.out.println("Handler 2: " + logger.getHandlers()[1].toString()); System.out.println(fh.toString()); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); }
L'inconvéniant c'est que tu peux pas changer la configuration sans recompiler.Citation:
Envoyé par flipper203
Chez moi en exécutant ton code j'ai qu'un seul Handler renvoyé par getHandlers() , celui que tu positionnes à la main.
Par contre, tout appel à logger.xxxx("un message") trace sur la console.
Par défaut, le framework java.util.logging utilise le fichier JRE_HOME/lib/logging.properties pour se configurer, donc :
- soit tu désactives la ligne : handlers= java.util.logging.ConsoleHandler dans le fichier de propriétés
- soit programmatiquement tu reset la configuration de la log :
Code:LogManager.getLogManager().reset();
Après un appel au reset ou après suppression de la ligne dans le fichier de propriétés, tu ne devrais avoir ta trace que dans ton Handler.
Matthieu BROUILLARD
Merci,
j ai utilisé le reset et ca marche maintenant.