log4j порядок иерархии журналов

170

Какова иерархия журналирования log4j?

DEBUG
INFO
WARN
ERROR
FATAL

Какой из них обеспечивает максимальную регистрацию, которая будет полезна для устранения проблем? Может ли кто-нибудь предоставить порядок или иерархию, в которой ведение журнала происходит от наивысшего к низшему? Спасибо!

Майк
источник

Ответы:

294

Эта таблица может быть полезна для вас:

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

Спустившись вниз по первому столбцу, вы увидите, как работает журнал на каждом уровне. то есть для WARN , ( FATAL, ERROR и WARN ) будут видны. Для OFF ничего не будет видно.

nxhoaf
источник
Условия видимости и предмета не говорят сами за себя. Я вижу, что официальная документация также расплывчата по этому вопросу. Метод вывода , такие как error, info, debugи т.д. из регистратора назначает уровень приоритета / тяжести на сообщение регистрации. Если регистрация действительно вступает в силу (сообщение будет видимым), зависит от эффективного уровня регистрации используемого регистратора.
Вольф
1
ссылка битая. пожалуйста исправьте или удалите
юрин
Хотя это отвечает на вопрос (это просто вопрос о «порядке иерархии»), я, наконец, отказался от вашей плохой терминологии: понижение , «видимость» работает , пункт . Разве вы не хотели объяснить, как конфигурация регистратора влияет на фактическую регистрацию (прохождение событий журнала)? Пожалуйста, рассмотрите другое обновление. Кстати: таблица в официальной документации (в конце раздела) отличается в обработке OFFи ALL, ну, после прочтения некоторых источников (не найдя особых случаев) я сомневаюсь, что их таблица верна.
Волк
Спасибо волк, я обновил ответ в соответствии с вашими комментариями.
nxhoaf
2
Я думаю, что это отличная визуализация уровней журнала и ожидаемых типов сообщений журнала, которые будут выводиться для определенной настройки уровня журнала. Мое единственное предложение может состоять в том, чтобы иметь чередующиеся цвета строк, чтобы направлять зрителя в том, что диаграмма должна интерпретироваться по строкам, а не по столбцам. (то есть строки представляют уровни ведения журнала, а столбцы представляют типы сообщений журнала, которые будут присутствовать)
Ларри Гектор
149

Используйте силу, читать источник (отрывок из Priorityи Levelскомпилированного класса, уровень TRACE был введен в версии 1.2.12):

public final static int OFF_INT = Integer.MAX_VALUE;
public final static int FATAL_INT = 50000;
public final static int ERROR_INT = 40000;
public final static int WARN_INT  = 30000;
public final static int INFO_INT  = 20000;
public final static int DEBUG_INT = 10000;
public static final int TRACE_INT = 5000; 
public final static int ALL_INT = Integer.MIN_VALUE; 

или log4j API для Levelкласса , что делает его совершенно понятным.

Когда библиотека решает, печатать ли определенную инструкцию или нет, она вычисляет эффективный уровень ответственного Loggerобъекта (на основе конфигурации) и сравнивает его с LogEventуровнем (зависит от того, какой метод использовался в коде - trace / debug / ... / фатально ). Если LogEventуровень больше или равен Loggerуровню, LogEventон отправляется appender (s) - «print». По сути, все сводится к целочисленному сравнению, и именно здесь эти константы начинают действовать.

Мада
источник
56
OFF
FATAL
ERROR
WARN
INFO
DEBUG
TRACE
ALL
the.malkolm
источник
1
Это противоречит информации, предоставленной на tutorialspoint.com/log4j/log4j_logging_levels.htm Какая из них является правдой ???
Майк
1
проверьте код где целочисленные переменные для доказательства docjar.com/html/api/org/apache/log4j/Level.java.html
the.malkolm
4
по вашей ссылке он сказал, что "ALL <DEBUG <INFO <WARN <ERROR <FATAL <OFF", и это совершенно так же, как я сказал
the.malkolm
6
Диаграмма Венна ВЫКЛ () ВСЕ (TRACE (ОТЛАДКА (ИНФОРМАЦИЯ (ПРЕДУПРЕЖДЕНИЕ (ОШИБКА (FATAL))))))
Эрнан Эче
@Mike на log4j Уровни ведения журнала, они используют алфавитный порядок в первой таблице . За исключением пропавших без вести trace, они позже правильно утверждают, что ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF(где это <означает, что менее важно)
Волк
24

Иерархия уровней журналирования log4j выглядит следующим образом в порядке убывания:

  • TRACE
  • ОТЛАЖИВАТЬ
  • ИНФОРМАЦИЯ
  • WARN
  • ОШИБКА
  • FATAL
  • OFF

Уровень журнала TRACE обеспечивает максимальное ведение журнала, что будет полезно для устранения проблем. Уровень журнала DEBUG также очень полезен для устранения проблем.

Вы также можете обратиться по этой ссылке для получения дополнительной информации об уровнях журнала: https://logging.apache.org/log4j/2.0/manual/architecture.html

Патик Мехта
источник
12

[Взято с http://javarevisited.blogspot.com/2011/05/top-10-tips-on-logging-in-java.html]

DEBUG - это самый низкий уровень ведения журнала Java с ограниченным доступом, и мы должны написать все, что нам нужно для отладки приложения. Этот режим ведения журнала Java следует использовать только в среде разработки и тестирования, и его нельзя использовать в производственной среде.

INFO более ограничен, чем уровень ведения журнала java DEBUG, и мы должны регистрировать сообщения с информативной целью, такие как запуск сервера, входящие сообщения, исходящие сообщения и т. Д. В журнале уровня INFO в java.

WARN более ограничен, чем уровень ведения журналов Java INFO, и используется для регистрации предупреждающих сообщений, например, потеря соединения между клиентом и сервером. Соединение с базой данных потеряно, сокет достиг своего предела. Эти сообщения и уровень ведения журнала java являются почти важными, потому что вы можете настроить оповещение для этих сообщений регистрации в java и позволить вашей группе поддержки отслеживать состояние вашего java-приложения и реагировать на это предупреждение. Вкратце уровень WARN используется для регистрации предупреждающего сообщения для входа в Java.

ОШИБКА является более ограниченным уровнем ведения журнала Java, чем WARN, и используется для регистрации ошибок и исключений, вы также можете настроить оповещение на этом уровне ведения журнала Java и команду мониторинга оповещений для реагирования на эти сообщения. ОШИБКА серьезна для входа в Java, и вы всегда должны печатать ее.

ФАКТИЧЕСКИЙ уровень ведения журнала java обозначает очень серьезные события ошибок, которые, вероятно, приведут к прекращению работы приложения. После этого в основном ваше приложение вылетает и останавливается.

ВЫКЛ. Уровень ведения журнала Java имеет наивысший возможный ранг и предназначен для отключения ведения журнала в Java.

chocolatecastle
источник
4

Порядок иерархии

  1. ВСЕ
  2. TRACE
  3. ОТЛАЖИВАТЬ
  4. ИНФОРМАЦИЯ
  5. WARN
  6. ОШИБКА
  7. FATAL
  8. OFF
Сарат
источник