Каковы накладные расходы на создание Log4j Logger

У меня есть несколько веб-сервисов в моем приложении, и я хочу, чтобы они записывали их в разные файлы на основе имени webservice. Для этого я создаю регистраторы с

myLogger = Logger.getLogger(logKey);

Мне интересно, следует ли кэшировать эти регистраторы, чтобы избежать их создания для каждого вызова, или я могу игнорировать накладные расходы.

Ответ 1

Регистраторы уже кэшируются log4j, используя репозиторий журналов по умолчанию (Hierarchy). Другими словами, это просто поиск в хэш-таблице.

Однако, по моему опыту, вы ставите логгер статическим, так что он заканчивается тем, что вызывается один раз для каждого класса.

Ответ 2

Этот метод Logger.getLogger(logKey) просматривает кеш регистратора для регистратора с именем, переданным в logKey. Если он не существует, он создает его. Сначала вызовите имя регистратора, будет создан Logger, но последующие вызовы получат его из кеша, поэтому вам не нужно обрабатывать это в вашем коде.