Log4J является текущим стандартом не только в разработке с открытым исходным кодом. Он претендует на то, чтобы быть быстрым и гибким: сначала скорость, а потом гибкость. Но есть некоторые подводные камни, когда дело доходит до кризиса.
Стоимость запроса журнала состоит из вызова метода и целочисленного сравнения. Обычно это около 1-20 нс (в зависимости от вашего процессора) за звонок. Однако это не включает «скрытые» затраты на создание параметров.
Простой пример:
logger.debug("Value: " + x*y);
Независимо от того, будет ли сообщение действительно зарегистрировано или нет, создание параметра вызовет дополнительные затраты. Эти затраты на создание параметров могут быть довольно высокими и зависеть от размера используемых параметров.
Чтобы избежать затрат на строительство параметра:
if(logger.isDebugEnabled() {
logger.debug("Value: " + x*y);
}
Это не приведет к затратам на создание параметров, если отладка отключена. С другой стороны, если в логгере включена отладка, он будет в два раза дороже оценивать, включен ли регистратор: один раз в debugEnabled и один раз в отладке. Это незначительные накладные расходы, потому что оценка регистратора занимает около 1% времени, необходимого для фактического ведения журнала.
Так что, если скорость является реальной проблемой, вы должны дважды проверить свои записи в журнале на предмет «скрытых» затрат.
Ресурсы: http://logging.apache.org/log4j/1.2/manual.html