본문 바로가기

.Tip

Tip) Log4j 에서 isDebugEnabled() 를 체크 하는 이유..

내용추가) jsp geek님의 "Log4J 로깅 비용 계산" 을 참고하자.

- 여기서는 isDebugEnable()이라 하더라도, for/ while문처럼 반복문 안에 있다면

  많은 비용이 발생한다고 얘기한다.

  즉, 레벨 체크가 두번 씩 이루어지기 때문이다.


나미라는 분의 "Log4j에서 isDebugEnabled() 로 체크해줘야 하는 이유" 을 보면,


다음 둘의 차이점(퍼포먼스)을 얘기해주고 있다.

logger = Logger.getLogger("stdout");

logger.debug("나는 디버그야");

or


if(logger.isDebugEnabled())

{

       logger.debug("나는 디버그야");

}


C에서 디버그용 메세지를 다룰때는.. 다음처럼 macro로 사용했었는데,

java에서는 어떻게 해야 하는지 모르겠다.

#ifdef DEBUG_ENABLED

#define DEBUG debug_func(...)

#else

#define DEBUG

#endif


그렇다고, 위에처럼 if()..>조건 문을 일일이 넣기는 지저분한것 같고..


[추가] Conditional Compilation Java

- java에서 C의 #ifdef, #endif 처럼 사용할수 있는 팁을 소개한 곳이 있다.

- Static Final을 사용하여 흉내내기 팁