2017-10-30 10 views
1

로깅 루틴을 보유하고 인터페이스를 구현하고 있습니다. 따라서 나는 인터페이스 내부에서 로거를 "캐시"하고 싶습니다.자바 "캐시"SLF4J 로거 인터페이스에서

이렇게 보입니다.

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import java.util.function.Supplier; 

interface ILogger { 


    public static final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); 


    default void debug() { 
     // do sth with logger 
    } 
} 

하지만이 방법은 정적 방법으로 사용할 수 없습니다.

디버거 방법을 사용할 때마다 내 로거를 필드에 저장할 수 없으므로 어떻게 찾지 않아도됩니까?

답변

2

이름 얻을 수있는 정적 클래스 참조를 사용

interface ILogger { 
    Logger logger = LoggerFactory.getLogger(ILogger.class.getName()); 

    default void debug(String message) { 
     logger.debug(message); 
    } 
} 
+0

덕분에,이 :-) 나를 위해 작동 –