API журналирования Java, отключить ведение журнала на стандартный вывод - PullRequest
8 голосов
/ 21 мая 2011

Используя стандартный API ведения журнала Java (import java.util.logging.Logger), после построения:

Logger l = Logger.getLogger("mylogger");

Я уже могу что-то зарегистрировать. Поскольку у него нет FileHandler, он ничего не записывает на диск.

l.severe("test with no handler");

Он записывает (некоторые, не все) сообщения журнала для вывода. Как я могу отключить эту функцию? заранее спасибо Агостино

Ответы [ 3 ]

8 голосов
/ 25 мая 2011

Вопрос возникает, если вы не знаете конфигурацию по умолчанию для ведения журналов утилит java. Архитектурный факт: 0) Каждый регистратор, независимо от его имени, имеет корневой регистратор в качестве родителя. Факты по умолчанию: 1) свойство logger useParentHandlers имеет значение true по умолчанию 2) корневой логер имеет ConsoleHandler по умолчанию

Итак. Новый регистратор по умолчанию отправляет свои записи журнала также своему родителю (точка 1), который является корневым регистратором (точка 0), который по умолчанию регистрирует их на консоли (точка 2).

Удалить консоль регистрации легко, как:

Logger l0 = Logger.getLogger("");
l0.removeHandler(l0.getHandlers()[0]);
7 голосов
/ 26 августа 2013

Стандартные регистраторы в Java имеют иерархическую структуру, и дочерние регистраторы по умолчанию наследуют обработчики своих родителей.Попробуйте отключить использование родительских обработчиков:

l.setUseParentHandlers(false);
0 голосов
/ 21 мая 2011

По отключить эту функцию Вы имеете в виду, что вообще не хотите ничего регистрировать? Если это так, вы должны установить уровень этого регистратора в NONE

Например, если вы используете файл свойств ведения журнала, вы можете установить:

mylogger.level=NONE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...