为什么Log记录日志要先做一个判断了?如下。
if (logger.isErrorEnabled()){
logger.error(msg,e);
}
还有就是logger.isDebugEnabled和logger.isInfoEnable 等等?
迷茫2017-04-18 10:57:29
다음 예시를 보시면 이해가 되실 겁니다.
으아아아로그를 기록할 때 일부 매개변수 정보가 기록되는 경우가 있습니다. jcl
을 로그 인터페이스로 사용하는 경우 문자열 연결이 불가피하지만 로그의 수준이 다른 경우(level
) 이는 정상입니다. 온라인으로 실행 중이면 모든 로그 수준의 로그가 기록되지 않습니다.
jcl
사용시 로그레벨 판단을 높이지 않는다면. 이러한 방식으로 log.debug("log " + param1 + " ...");
을 직접 사용하면 불필요한 String
개체가 많이 생성되며 실제로는 효과가 없으며 실행 시간도 낭비됩니다. 동시에 String
도 이러한 쓰레기를 대량으로 재활용해야 합니다. gc
판단을 추가해야 하는 이유입니다. jcl
를 직접 사용하여 자리 표시자를 사용하여 slf4j
판단을 줄일 수 있습니다. if
log.debug("log {} ...", param1)
slf4j
등