Die JavaDocs fürjava.util.logging.Level state:
Die Ebenen in absteigender Reihenfolge sind:
SEVERE(Höchster Wert)WARNINGINFOCONFIGFINEFINERFINEST(niedrigster Wert)
Quelle
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));
}
}
}
Ausgabe
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 . . .
Problemstellung
In meinem Beispiel ist das Levelauf gesetzt FINER, sodass ich erwartet hatte, dass für jede Schleife 2 Nachrichten angezeigt werden. Stattdessen sehe ich für jede Schleife eine einzelne Nachricht (die Level.FINENachrichten fehlen).
Frage
Was muss geändert werden, um die FINE( FINERoder FINEST) Ausgabe zu sehen?
Update (Lösung)
Dank der Antwort von Vineet Reynolds funktioniert diese Version gemäß meinen Erwartungen. Es werden 3 x INFONachrichten und 3 x FINENachrichten angezeigt .
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));
}
}
}
