Между чем различие logger.debug
и logger.info
?
Когда будет logger.debug
быть распечатанными?
Это будет зависеть от конфигурации ведения журнала. Значение по умолчанию будет зависеть от используемой платформы. Идея состоит в том, что позже, изменив параметр конфигурации с INFO на DEBUG, вы увидите массу дополнительных (или меньше, если наоборот) строк, напечатанных без перекомпиляции всего приложения.
Если вы думаете, какой из них использовать, то все сводится к размышлениям о том, что вы хотите увидеть на каком уровне. Для других уровней, например, в Log4J, посмотрите API, http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html
Предлагаю вам посмотреть статью под названием «Краткое введение в log4j» . Он содержит краткое объяснение уровней журнала и демонстрирует, как их можно использовать на практике. Основная идея уровней журналов заключается в том, что вы хотите иметь возможность настраивать степень детализации журналов в зависимости от ситуации. Например, если вы пытаетесь устранить проблему, вам нужно, чтобы журналы были очень подробными. В производственной среде вы можете захотеть видеть только предупреждения и ошибки.
Уровень журнала для каждого компонента вашей системы обычно контролируется с помощью параметра в файле конфигурации, поэтому его легко изменить. Ваш код будет содержать различные операторы ведения журнала с разными уровнями. При ответе на исключение
вы можете вызвать 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");
В основном это зависит от того, как настроены ваши регистраторы. Обычно отладочный вывод записывается во время разработки, но отключается в производстве - или, возможно, у вас есть выбранные категории отладки, которые записываются во время отладки определенной области.
Смысл наличия различных приоритетов заключается в том, чтобы позволить вам повышать/понижать уровень детализации конкретного компонента достаточно тонким образом - и для того, чтобы увидеть разницу, достаточно изменить конфигурацию протоколирования (а не код).
В чем разница между logger.debug и logger.info?
Это только некоторые уже определенные уровни по умолчанию. Вы можете определить свои собственные уровни, если хотите. Цель этих уровней - включить/выключить один или несколько из них, не внося никаких изменений в ваш код.
Когда будет выводиться logger.debug ??
Когда вы включили отладку или любой более высокий уровень в вашей конфигурации.