짧은 버전 : 부울 isDebugEnabled () 검사도 수행 할 수 있습니다.
이유 :
1- 복잡한 논리 / 문자열이 연결된 경우. 디버그 문에 추가되어 이미 체크인했습니다.
2- "복잡한"디버그 명령문에 대한 명령문을 선택적으로 포함 할 필요는 없습니다. 모든 진술은 그런 식으로 포함됩니다.
3- log.debug를 호출하면 로깅 전에 다음을 실행합니다.
if(repository.isDisabled(Level.DEBUG_INT))
return;
이것은 기본적으로 호출 로그와 동일합니다. 또는 고양이. isDebugEnabled ().
하나! 이것이 log4j 개발자들이 생각하는 것입니다 (javadoc에 있으므로 아마도 그것을 따라야합니다).
이것은 방법입니다
public
boolean isDebugEnabled() {
if(repository.isDisabled( Level.DEBUG_INT))
return false;
return Level.DEBUG.isGreaterOrEqual(this.getEffectiveLevel());
}
이것은 그것을위한 javadoc입니다
/**
* Check whether this category is enabled for the <code>DEBUG</code>
* Level.
*
* <p> This function is intended to lessen the computational cost of
* disabled log debug statements.
*
* <p> For some <code>cat</code> Category object, when you write,
* <pre>
* cat.debug("This is entry number: " + i );
* </pre>
*
* <p>You incur the cost constructing the message, concatenatiion in
* this case, regardless of whether the message is logged or not.
*
* <p>If you are worried about speed, then you should write
* <pre>
* if(cat.isDebugEnabled()) {
* cat.debug("This is entry number: " + i );
* }
* </pre>
*
* <p>This way you will not incur the cost of parameter
* construction if debugging is disabled for <code>cat</code>. On
* the other hand, if the <code>cat</code> is debug enabled, you
* will incur the cost of evaluating whether the category is debug
* enabled twice. Once in <code>isDebugEnabled</code> and once in
* the <code>debug</code>. This is an insignificant overhead
* since evaluating a category takes about 1%% of the time it
* takes to actually log.
*
* @return boolean - <code>true</code> if this category is debug
* enabled, <code>false</code> otherwise.
* */