SLF4J는 java.util.logging나 log4j같은 다양한 자바 로깅 프레임워크에 대해 간단한 facade를 제공한다.
일반적으로 common-logging 에서 로깅을 사용하는 방법은 다음과같다.
이대로 방치하면 debug 수준의 로그를 원치 않을때에도 .debug() 메소드가 동작을 하면서 문자열을 생성한다. 문자열에 대한 처리는 상당히 오버헤드가 크므로 이를 해결하기 위해서 다음처럼 코드를 작성한다.
그렇지만 이것도 문제가 있는게, 여러가지 로깅수준의 메시지를 섞어사용하게 되면, 코드가 상당히 지저분해진다.
끔찍해지는군....이리하여 구원투수로 등장한놈이 SLFJ.
게다가 복잡한 isXXXXEnable()의 사라짐으로 인해 코드 가독성까지 향상된다.
참조 : http://www.slf4j.org/index.html
일반적으로 common-logging 에서 로깅을 사용하는 방법은 다음과같다.
logger.debug(this.getClass().getName() + "|" + forwardPage.getName() + "|" + (System.currentTimeMillis() - time));
if (logger.isDebugEnabled()) { logger.debug(this.getClass().getName() + "|" + forwardPage.getName() + "|" + (System.currentTimeMillis() - time)); }이렇게 로깅메시지를 생성하기 전에 로깅수준을 먼저 판별하도록 한다.
그렇지만 이것도 문제가 있는게, 여러가지 로깅수준의 메시지를 섞어사용하게 되면, 코드가 상당히 지저분해진다.
if(logger.isDebugEnabled(){
....some code...
}
....
if(logger.isInfoEnabled(){
....some code...
}
logger.debug("{}|{}|{}",SLFJ는 포맷팅앵커{} 를 사용하여, 로깅을 남길 필요가 없을때는 문자열을 구성하지 않는다.
this.getClass().getName(), forwardPage.getName(), (System.currentTimeMillis() - time));
게다가 복잡한 isXXXXEnable()의 사라짐으로 인해 코드 가독성까지 향상된다.
참조 : http://www.slf4j.org/index.html
'개발개발' 카테고리의 다른 글
Tomcat8에서 getRealPath() 값이 NULL일때 (0) | 2018.04.05 |
---|---|
module ssl_module is built-in and can't be loaded (0) | 2018.04.04 |
context binding (0) | 2011.09.26 |
self-executing anonymous function (0) | 2011.09.26 |
@SuppressWarnings("unchecked") does not ignore raw types warnings anymore (0) | 2011.09.22 |