Подтвердить что ты не робот

Где java.util.logging.Logger сохраняет свой журнал

Это может быть глупый вопрос, но я немного потерялся с помощью java Logger

private static Logger logger = Logger.getLogger("order.web.OrderManager");
logger.info("Removed order " + id + ".");

Где я вижу журнал? Также эта цитата из библиотеки java.util.logging.Logger:

При каждом вызове журнала Logger первоначально выполняет дешевую проверку уровня запроса (например, SEVERE или FINE) относительно эффективного уровня журнала регистратора. Если уровень запроса ниже уровня журнала, вызов журнала немедленно возвращается.
После прохождения этого начального (дешевого) теста Logger будет выделять LogRecord для описания сообщения о регистрации. Затем он вызовет фильтр (если он есть), чтобы сделать более подробную проверку, должна ли публикация быть опубликована. Если это пройдет, он затем опубликует LogRecord для своих обработчиков вывода. `

Означает ли это, что если у меня есть 3 request level log:

logger.log(Level.FINE, "Something");
logger.log(Level.WARNING, "Something");
logger.log(Level.SEVERE, "Something");

И мой log level СЕВЕР, я вижу все три журнала, и если мой log level ПРЕДУПРЕЖДЕНИЕ, то я не могу видеть журнал SEVERE, это правильно? И как установить log level?

4b9b3361

Ответ 1

Где я вижу журнал?

В файле журнала или стандартном выходе, в зависимости от вашей фактической конфигурации обработчика журнала. Это можно установить через файл свойств или напрямую через API протоколирования.

Означает ли это, что если у меня есть 3 журнала уровня запросов...

SEVERE - самый важный (наивысший приоритет), а FINE - наименее важный тип сообщения 3, показанный в вашем примере. Поэтому, если ваш уровень журнала SEVERE, регистрируются только сообщения SEVERE. Если уровень FINE, все 3 сообщения регистрируются.

Это очень полезно, когда в реальной рабочей среде вы можете регистрировать только ошибки и, возможно, предупреждения (которые, надеюсь, - довольно редки, но вы хотите узнать о них), поэтому вы можете установить уровень журнала 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);

Это просто пример, но в реальном приложении лучше настроить ведение журнала через файл свойств конфигурации.

Ответ 2

Обзор протоколов Java TM довольно интересно ответить на все ваши вопросы на Java Logger:

logging overview

Вы увидите свой журнал, где Handler (s), связанные с вашим Logger, будут генерировать указанный журнал (в Console или в Stream...).
Конфигурация по умолчанию устанавливает один обработчик в корневом журнале для отправки вывода на консоль.

Уровень журнала:

Каждое сообщение журнала имеет связанный уровень журнала. Уровень дает приблизительное руководство по важности и срочности сообщения журнала. Объекты уровня журнала инкапсулируют целочисленное значение, причем более высокие значения указывают на более высокие приоритеты.

Класс Level определяет семь стандартных уровней журнала, начиная от FINEST (самый низкий приоритет с наименьшим значением) до SEVERE (с наивысшим приоритетом с наивысшим значением)..

Ответ 3

Где это происходит, зависит от вашей конфигурации. Об этом в документации API. Уровень журнала - это точная противоположность тому, что вы сказали. Если у вас есть конфигурация FINE, все, что есть FINE, WARNING, SEVERE, будет отображаться, но если у вас установлено значение SEVERE, тогда появятся только те, которые будут отображаться.

В общем случае вы должны использовать FINE во время отладки и переключиться на SEVERE, когда он находится в рабочей среде.