Как запретить построитель строк в сообщении журнала, если уровень журнала отключен - PullRequest
1 голос
/ 02 апреля 2019

Когда у меня есть сообщение журнала в коде (скажем, logger.debug("Some message {}", someFunction());) в ситуациях, когда уровень журнала выше отладки, я теперь построил строку и назвал someFunction() без причины. Я привык к C ++, и там я использовал бы некоторый макрос, который проверял бы уровень журнала перед фактическим вызовом logger.debug(...), но в Java не существует эквивалентного решения. Я ищу идеи для предотвращения заполнения моего кода с помощью:

if (logger.isDebugEnabled()) {
    logger.debug("Some message {}", someFunction());
}

за каждое сообщение в журнале. Любое предложение будет приветствоваться.

1 Ответ

4 голосов
/ 02 апреля 2019

Из Log4j 2.4 вы можете использовать logger.debug("Some message {}", () -> someFunction());. Это будет лениво оценено, и метод someFuction() будет вызываться только в том случае, если для уровня журнала установлено значение DEBUG или ниже - см. эту ссылку .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...