Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Разница между logger.info и logger.debug

Автор вопроса: SenthilnathanОтветов: 8

В чем разница между logger.debug и logger.info?

Когда будет logger.debug напечатан?

javalogginglog4j

Ответы

Ответ 1 · рейтинг 34 · toomasr

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

Если вы думаете, какой из них использовать, то все сводится к размышлениям о том, что вы хотите увидеть на каком уровне. Для других уровней, например в Log4J, посмотрите API, http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html

Ответ 2 · рейтинг 122 · William Brendel

Предлагаю вам ознакомиться со статьей под названием "Краткое введение в log4j". Он содержит краткое объяснение уровней журнала и демонстрирует, как их можно использовать на практике. Основная идея уровней журналов состоит в том, что вы хотите иметь возможность настраивать степень детализации журналов в зависимости от ситуации. Например, если вы пытаетесь устранить проблему, вам нужно, чтобы журналы были очень подробными. В производственной среде вы можете захотеть видеть только предупреждения и ошибки.

Уровень журнала для каждого компонента вашей системы обычно контролируется с помощью параметра в файле конфигурации, поэтому его легко изменить. Ваш код будет содержать различные операторы ведения журнала с разными уровнями. Отвечая на Exception, вы можете позвонить Logger.error. Если вы хотите напечатать значение переменной в любой момент, вы можете вызвать Logger.debug. Эта комбинация настраиваемого уровня ведения журнала и операторов ведения журнала в вашей программе позволяет вам полностью контролировать, как ваше приложение будет регистрировать свою активность.

По крайней мере, в случае log4j порядок уровней журнала следующий:

DEBUG < INFO < WARN < ERROR < FATAL

Вот небольшой пример из этой статьи, демонстрирующий, как работают уровни журнала.

   // get a logger instance named "com.foo"
   Logger logger = Logger.getLogger("com.foo");

   // Now set its level. Normally you do not need to set the
   // level of a logger programmatically. This is usually done
   // in configuration files.
   logger.setLevel(Level.INFO);

   Logger barlogger = Logger.getLogger("com.foo.Bar");

   // This request is enabled, because WARN >= INFO.
   logger.warn("Low fuel level.");

   // This request is disabled, because DEBUG < INFO.
   logger.debug("Starting search for nearest gas station.");

   // The logger instance barlogger, named "com.foo.Bar",
   // will inherit its level from the logger named
   // "com.foo" Thus, the following request is enabled
   // because INFO >= INFO.
   barlogger.info("Located nearest gas station.");

   // This request is disabled, because DEBUG < INFO.
   barlogger.debug("Exiting gas station search");

Ответ 3 · рейтинг 16 · user1823890

Просто пояснение о наборе всех возможных уровней, а именно:

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF

Ответ 4 · рейтинг 11 · Jon Skeet

В основном это зависит от того, как настроены ваши регистраторы. Обычно выходные данные отладки записываются во время разработки, но отключаются в производственной среде - или, возможно, выбранные категории отладки записываются при отладке определенной области.

Смысл наличия разных приоритетов состоит в том, чтобы позволить вам повышать / понижать уровень детализации для конкретного компонента достаточно детализированным способом - и нужно только изменить конфигурацию ведения журнала (а не код), чтобы увидеть разницу.

Ответ 5 · рейтинг 6 · Santosh Srivastava

  1. INFO используется для регистрации информации, которую ваша программа работает должным образом.
  2. DEBUG используется для поиска причины, если ваша программа не работает должным образом или возникло исключение. это в интересах разработчика.

Ответ 6 · рейтинг 3 · Mickey Perlstein

Это очень старый вопрос, но я не вижу здесь своего понимания, поэтому добавлю свои 2 цента:

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

  • отладка: разработчик - ручная отладка
  • трассировка: автоматическое ведение журнала и отслеживание шагов - для поддержки 3-го уровня
  • информация: техник / уровень поддержки 1/2
  • предупреждение: технический специалист / ошибка пользователя: автоматическое предупреждение / уровень поддержки 1
  • критический / фатальный: зависит от вашей настройки - местный ИТ-отдел

Ответ 7 · рейтинг 1 · Jack'

Это зависит от того, какой уровень вы выбрали в файле конфигурации log4j.

<Loggers>
        <Root level="info">
        ...

Если ваш уровень - "информация" (по умолчанию), logger.debug(...) не будет отображаться в вашей консоли. Однако, если ваш уровень - "отладка", так и будет.

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

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF

Ответ 8 · craftsman

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

Когда будет напечатан logger.debug ??

Когда вы включили отладку или какой-либо более высокий уровень в вашей конфигурации.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы