Возможно ли, чтобы logger.debug выдавал ошибку, если уровень ведения журнала - информация - PullRequest
1 голос
/ 20 марта 2020

Я новичок в регистраторах, и я просто хотел спросить, получу ли я сообщение об ошибке, если мой уровень журнала - информация, тогда у меня есть что-то вроде:

logger.debug("hello " + object.getMethod());

И это не внутри if Блок, как показано ниже:

if(LOGGER.isDebugEnabled){...}

Также, это повлияет на время, когда приложение может ответить. Если его нет внутри оператора if блока?

1 Ответ

0 голосов
/ 20 марта 2020

Все методы логов тоже проверяют уровень внутри. Причина у нас есть isXYZEnabled методы, если для производительности.

Рассмотрим следующий вызов:

logger.debug("Value of myObject is: " + hugeObject.toString());

и предположим, что hugeObject, как следует из его названия, огромен. Создание его строкового представления может потребовать как много времени, так и памяти, и в конечном итоге бессмысленно, поскольку после создания строки ничего не будет записываться в журнал, если уровень не настроен на отладку. Вместо этого вы можете явно проверить уровень перед выполнением этого разговора и сэкономить время, которое могло бы потребоваться:

if (logger.isDebugEnabled()) {
    logger.debug("Value of myObject is: " + hugeObject.toString());
}
...