Это могло бы быть глупым вопросом, но я немного потерян с Регистратором Java
private static Logger logger = Logger.getLogger("order.web.OrderManager");
logger.info("Removed order " + id + ".");
Где я вижу журнал? Также эта кавычка от java.util.logging. Библиотека Logger:
На каждом вызове входа Регистратор первоначально выполняет дешевую проверку уровня запроса (например, Серьезный или ПРЕКРАСНЫЙ) против эффективного уровня журнала регистратора. Если уровень запроса ниже, чем уровень журнала, регистрирующийся вызов сразу возвращается.
После передачи этого начального (дешевого) теста Регистратор выделит LogRecord для описания регистрирующегося сообщения. Это затем назовет Фильтр (если есть), чтобы сделать, более подробное начинает работу, должна ли запись быть опубликована. Если это передаст его, то затем опубликует LogRecord к его Обработчикам выводов.'
Делает это означает это, если я имею 3 request level
журнал:
logger.log(Level.FINE, "Something");
logger.log(Level.WARNING, "Something");
logger.log(Level.SEVERE, "Something");
И мой log level
СЕРЬЕЗНО, я вижу все три журнала, и если мой log level
ПРЕДУПРЕЖДАЕТ, затем я не вижу СЕРЬЕЗНЫЙ журнал, который корректен? И как я устанавливаю log level
?
Где я увижу журнал?
В файле журнала или стандартном выводе, в зависимости от фактической конфигурации обработчика журнала. Это можно задать через файл свойств или непосредственно через API протоколирования.
Означает ли это, что если у меня есть журнал 3 уровня запросов...
SEVERE
является наиболее важным (наивысший приоритет) и FINE
является наименее важным типом сообщения из 3, показанных в вашем примере. Таким образом, если уровень журнала SEVERE
, в журнал попадают только сообщения SEVERE
. Если уровень FINE
, в журнал попадают все три сообщения.
Это очень полезно, когда в реальной производственной среде вы хотите регистрировать только ошибки и, возможно, предупреждения (которые - надеюсь - довольно редки, но вы хотите знать о них), поэтому вы можете установить уровень журнала на WARNING
. Однако в среде разработки, например, при отладке проблемы, вы хотите видеть всю информацию в журналах, даже если это создает большой объем данных журнала и замедляет работу приложения. Поэтому вы устанавливаете уровень журнала на FINE
или FINEST
.
Вот хорошее введение в логирование Java.
Обновление: простой пример с вышеуказанной страницы для настройки регистратора на запись в файл на уровне FINEST
:
Handler fh = new FileHandler("%t/wombat.log");
Logger.getLogger("").addHandler(fh);
Logger.getLogger("com.wombat").setLevel(Level.FINEST);
Для записи в консоль замените FileHandler
выше на ConsoleHandler
:
Handler ch = new ConsoleHandler();
Logger.getLogger("").addHandler(ch);
Однако это всего лишь пример - в реальном приложении предпочтительнее настраивать ведение журнала через файл свойств конфигурации.
Обзор Java TM Logging Overview довольно интересен, чтобы ответить на все ваши вопросы о Java Logger
:
Вы увидите свой журнал, где обработчик
(s), связанные с вашим Регистратором
, будут генерировать указанный журнал (в консоли
или в потоке
...).
Конфигурация по умолчанию устанавливает единственный обработчик в корневом регистраторе для отправки вывода на консоль.
Уровень журнала :
Каждое сообщение журнала имеет связанный уровень журнала. Уровень дает приблизительное представление о важности и срочности сообщения журнала. Объекты уровня журнала инкапсулируют целочисленное значение, причем более высокие значения указывают на более высокий приоритет.
Класс
Уровень
определяет семь стандартных уровней журнала, в диапазоне отFINEST
(самый низкий приоритет, с самым низким значением) доSEVERE
( наивысший приоритет, с наивысшим значением ).
Куда он идет, зависит от вашей конфигурации. Подробности об этом читайте в документации по API. Уровень журнала полностью противоположен тому, что вы сказали. Если у вас есть конфигурация FINE
, все, что является FINE, WARNING, SEVERE
, будет отображаться, но если у вас установлено значение SEVERE
, то только они будут появиться.
Как правило, вы должны использовать FINE
при отладке и переключаться на SEVERE
в производственной среде.