본문 바로가기

Dev-/Java

logger 변수 private static final 선언이유?

보통 아래와 같이 무의식적으로 logger를 선언한다.

private static final Logger logger = LoggerFactory.getLogger(ThisClass.class);


스택오버플로우를 보면,


- private: 다른 클래스에서 가로채 사용하지 못하도록

- static: 인스턴스당 하나만 필요하므로, 또한 직렬화를 피하기 위해

- final: 변경될 일이 없으므로


라고 되어있는데,



영어라서 자세한 이유는 모르겠지만, 여러가지 이유로 static은 제외할 것을 권장한다고 한다.

따라서 아래와 같이 선언하면 될 것 같다.

private final Logger logger = LoggerFactory.getLogger(getClass());



참고:

https://stackoverflow.com/questions/6653520/why-do-we-declare-loggers-static-final

https://stackoverflow.com/questions/8262310/any-reason-to-use-private-instead-of-private-final-static-on-the-logback-logger