2013-08-26 4 views
0

당신이 SLF4J의 API 항아리 (slf4j-api-x.x.x.jar)와 같은 런타임 클래스 경로에 바인딩, 당신이 사용할 수있는 코드가있을 때 : 당신을 위해합니다 (specied 클래스 기준)SLF4J API 로거 : 싱글 톤 또는 멀티 톤?

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

합니까 SLF4J 편리 Logger 인스턴스를 캐시를, 또는 매번 새로운 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, logger2logger3) 모두 동일한 인스턴스/메모리 참조 또는 그들은 대신 기록하도록 구성 3 개 별도의 로거 인스턴스 모두 Widget 클래스의

답변

0

예 SLF4J는 로거에서 캐싱을 수행합니다.

0

세 개 모두 동일한 개체에 대한 참조 여야합니다. logger1 == logger2으로 직접 테스트하는 것은 쉬운 일이 아닙니다.

0

쉽게 테스트 할 수 있습니다. 그냥 logger1 == logger2 == logger3을 확인하십시오. Logger가 인스턴스를 캐시하고 재사용하는 인스턴스 제어 클래스 인 경우 참조는 동일한 객체를 가리 킵니다. 매번 새로운 로거를 반환하는 경우에는 false가 반환됩니다.