Это действительно зависит от того, как вы написали эти инструкции.Если вы написали:
logger.debug(computeSomeCostlyDebugOutput());
Вы можете сильно повлиять на производительность, если регистратор не настроен на уровень отладки (computeSomeCostlyDebugOutput
всегда будет занимать время, и его результат будет игнорироваться регистратором, если нет.соответствует уровню DEBUG).
Если вы напишите вместо этого:
if (logger.isDebugEnabled()) {
logger.debug(computeSomeCostlyDebugOutput());
}
, то дорогостоящие операции и ведение журнала будут происходить только в том случае, если установлен правильный уровень ведения журнала (т. е. выигравший регистратор)не игнорируйте это).По сути, он действует как еще один переключатель для логгера, причем первый коммутатор является сконфигурированным уровнем логгера.
Как очень хорошо заметил Анджей Дойл, регистратор проверит свой уровень внутри, но это происходит в методе debug
, после того как время было уже потрачено на computeSomeCostlyDebugOutput
.Если вы тратите время на computeSomeCostlyDebugOutput
, вам лучше это делать, когда вы знаете, что его результат не будет напрасным.
Многие программы поставляются с инструкциями по регистрации, которые можно активировать, если вам нужно больше подробностей ввнутренняя работа вещи, путь исполнения и прочее.Просто убедитесь, что они могут быть деактивированы и занимают вычислительное время, только если установлен соответствующий уровень.