2013-08-26 2 views
0

Если у вас есть API баночка SLF4J в (slf4j-api-x.x.x.jar) и обязательном для вашего исполнения пути класса, вы можете использовать код вроде:SLF4J API-регистраторы: одиночные или многотонные?

Logger logger = LoggerFactory.getLogger(getClass()); 
logger.debug("Some debug message"); 

ли SLF4J удобно кэшировать Logger экземпляров (на основе specied класса) для вас, или он просто возвращает новый Logger каждый раз?

Например, если у меня есть:

Logger logger1 = LoggerFactory.getLogger(Widget.class); 
Logger logger2 = LoggerFactory.getLogger(Widget.class); 
Logger logger3 = LoggerFactory.getLogger(Widget.class); 
logger1.debug("Some debug message"); 

ли регистраторы (logger1, logger2 и logger3) все тот же экземпляр/ссылка на память, или они 3 отдельные экземпляры регистратора, все сконфигурированные для входа в систему от имени класса Widget?

ответ

0

Да SLF4J выполняет кеширование на регистраторах.

0

Все три должны быть ссылками на один и тот же объект. Обратите внимание, что это тривиально, чтобы проверить себя с помощью logger1 == logger2.

0

Вы можете легко проверить это самостоятельно. Просто сделайте checklogger1 == logger2 == logger3. Если Logger - это контролируемый экземпляром класс, который кэширует и повторно использует свои экземпляры, ссылки указывают на один и тот же объект. Если вместо этого он возвращает новый журнал каждый раз, ваш чек вернет false.

Смежные вопросы