El JavaDocs pour java.util.logging.Level
l'État :
Les niveaux, par ordre décroissant, sont les suivants :
-
SEVERE
(valeur la plus élevée) WARNING
INFO
CONFIG
FINE
FINER
-
FINEST
(valeur la plus basse)
Source :
import java.util.logging.*;
class LoggingLevelsBlunder {
public static void main(String[] args) {
Logger logger = Logger.getAnonymousLogger();
logger.setLevel(Level.FINER);
System.out.println("Logging level is: " + logger.getLevel());
for (int ii=0; ii<3; ii++) {
logger.log(Level.FINE, ii + " " + (ii*ii));
logger.log(Level.INFO, ii + " " + (ii*ii));
}
}
}
Sortie
Logging level is: FINER
Jun 11, 2011 9:39:23 PM LoggingLevelsBlunder main
INFO: 0 0
Jun 11, 2011 9:39:24 PM LoggingLevelsBlunder main
INFO: 1 1
Jun 11, 2011 9:39:24 PM LoggingLevelsBlunder main
INFO: 2 4
Press any key to continue . . .
Exposé du problème
Dans mon exemple, le Level
a FINER
Je m'attendais donc à voir deux messages pour chaque boucle. Au lieu de cela, je vois un seul message pour chaque boucle (le message Level.FINE
sont manquants).
Question
Qu'est-ce qui doit changer pour que le FINE
(, FINER
o FINEST
) ?
Mise à jour (solution)
Merci à La réponse de Vineet Reynolds Cette version fonctionne conformément à mes attentes. Il affiche 3 x INFO
messages, & 3 x FINE
messages.
import java.util.logging.*;
class LoggingLevelsBlunder {
public static void main(String[] args) {
Logger logger = Logger.getAnonymousLogger();
// LOG this level to the log
logger.setLevel(Level.FINER);
ConsoleHandler handler = new ConsoleHandler();
// PUBLISH this level
handler.setLevel(Level.FINER);
logger.addHandler(handler);
System.out.println("Logging level is: " + logger.getLevel());
for (int ii=0; ii<3; ii++) {
logger.log(Level.FINE, ii + " " + (ii*ii));
logger.log(Level.INFO, ii + " " + (ii*ii));
}
}
}
12 votes
Il me semble que vous aurez les messages imprimés deux fois sur la console pour INFO et au-dessus : d'abord par le logger anonyme, puis par son parent, le logger global qui a aussi un ConsoleHandler réglé sur INFO par défaut. Pour désactiver le logger global, vous devez ajouter cette ligne de code : logger.setUseParentHandlers(false) ;
0 votes
Je veux juste confirmer le commentaire de mins sur les doubles. Vous obtiendrez deux sorties à moins que vous n'utilisiez .setUseParentHandlers(false) ;
0 votes
Dans votre solution, bûcheron a deux Handlers (un par défaut à INFO et un ajouté à FINE), donc logger.info("quelque chose") s'imprimerait deux fois