JavaDocs для java.util.logging.Level
:
Уровни в порядке убывания:
-
SEVERE
(наибольшее значение) -
WARNING
-
INFO
-
CONFIG
-
FINE
-
FINER
-
FINEST
(самое низкое значение)
Источник
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));
}
}
}
Выход
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 . . .
Описание проблемы
Мой пример устанавливает Level
в FINER
, поэтому я ожидал увидеть 2 сообщения для каждого цикла. Вместо этого я вижу одно сообщение для каждого цикла (сообщения Level.FINE
отсутствуют).
Вопрос
Что нужно изменить, чтобы увидеть вывод FINE
(, FINER
или FINEST
)?
Обновление (решение)
Благодаря ответу Vineet Reynolds эта версия работает в соответствии с моими ожиданиями. Он отображает сообщения 3x INFO
и сообщения 3x FINE
.
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));
}
}
}