Как я могу установить отдельные уровни журнала в разных классах Java?
(Я новичок в Java, и я прочитал java.util.logging: как установить уровень с помощью пакета логгера (или префикса)? Уже. Поскольку он не мог ответить на мой вопрос, вот он)
Я разрабатываю систему, которая имеет private static final Logger log = Logger.getLogger(XXX.class.getName());
атрибуты в нескольких классах (XXX
будучи соответствующим классом).
я использую log.setLevel(level)
с разными level
с, но все log
объекты, кажется, работают на том же уровне журнала. Печать log
само по себе, кажется, указывает на то, что человек log
объекты на самом деле одинаковы. Я не понимаю почему.
Отладочный вывод выглядит так:
[CONFIG ]...Parser init: java.util.logging.Logger@6bc7c054 logging level FINE
[CONFIG ]...Tokenizer init: java.util.logging.Logger@6bc7c054 logging level CONFIG
И все же Parser
журналы классов на уровне CONFIG
...
2 ответа
Печать самого журнала, кажется, указывает, что отдельные объекты журнала фактически одинаковы. Я не понимаю почему.
Parser
а также Tokenizer
звонят Logger.getLogger(XXX.class.getName());
с тем же именем XXX
учебный класс. Измените пример кода, чтобы напечатать имя регистратора.
Отладочный вывод выглядит так
В этом мне помогает пример Minimal, Complete и Verifiable. Уровни используются для квалификации сообщений, а уровни используются для фильтрации сообщений. Если вы не включите хотя бы код, который выдает выходные данные отладки, трудно сказать, что означает значение для каждого уровня в списке.
Вы, кажется, путаете уровень фильтрации Logger и уровень регистрации сообщений.
Каждый регистратор имеет уровень ведения журнала, который действует как фильтр для сообщений; сообщения, которые регистрируются на уровне, который ниже уровня фильтрации регистратора, игнорируются.
Вот пример (не фактический код):
Logger myLogger = Logger.getLogger("somename");
myLogger.setLevel(FINE);
myLogger.fine("fine grained log message");
myLogger.finest("finest level of logging");
myLogger.info("info level message");
myLogger.fine("second fine message");
Приведенный выше "код" выдаст следующие сообщения в файле журнала:
fine grained log message
info level message
second fine message
Обратите внимание, что сообщение "лучший уровень ведения журнала" не будет отображаться в журнале, потому что FINEST
уровень ниже чем FINE
и таким образом фильтруется регистратором.