>  Q&A  >  본문

java - 为什么Log记录日志要先做一个判断

为什么Log记录日志要先做一个判断了?如下。

   if (logger.isErrorEnabled()){
        logger.error(msg,e);
    }
    
 还有就是logger.isDebugEnabled和logger.isInfoEnable 等等?   
巴扎黑巴扎黑2742일 전452

모든 응답(1)나는 대답할 것이다

  • 迷茫

    迷茫2017-04-18 10:57:29

    다음 예시를 보시면 이해가 되실 겁니다.

    으아아아

    로그를 기록할 때 일부 매개변수 정보가 기록되는 경우가 있습니다. jcl을 로그 인터페이스로 사용하는 경우 문자열 연결이 불가피하지만 로그의 수준이 다른 경우(level) 이는 정상입니다. 온라인으로 실행 중이면 모든 로그 수준의 로그가 기록되지 않습니다.

    jcl 사용시 로그레벨 판단을 높이지 않는다면. 이러한 방식으로 log.debug("log " + param1 + " ...");을 직접 사용하면 불필요한 String 개체가 많이 생성되며 실제로는 효과가 없으며 실행 시간도 낭비됩니다. 동시에 String도 이러한 쓰레기를 대량으로 재활용해야 합니다. gc 판단을 추가해야 하는 이유입니다. jcl


    물론 이제

    를 직접 사용하여 자리 표시자를 사용하여 slf4j 판단을 줄일 수 있습니다. iflog.debug("log {} ...", param1)slf4j

    회신하다
    0
  • 취소회신하다