====== Groovy Logging ======
[[http://docs.codehaus.org/display/GROOVY/Groovy+1.8+release+notes|Groovy 1.8]] 부터 어노테이션을 통해 ''Logger'' 객체를 자동으로 주입해주는 기능이 생겼다.
* [[http://docs.codehaus.org/display/GROOVY/Groovy+1.8+release+notes#Groovy18releasenotes-Log|/Groovy 1.8 Release Notes - Log]]
* [[http://linkedjava.blogspot.kr/2011/05/groovy-18-logging.html|Groovy 1.8 Logging]]
* [[http://www.canoo.com/blog/2010/09/20/log-groovys-new-and-extensible-logging-conveniences/|자신만의 @Log 어노테이션 만들기]]
===== 지원 어노테이션 =====
* [[http://groovy.codehaus.org/api/groovy/util/logging/Log.html|@Log]] for java.util.logging
* [[http://groovy.codehaus.org/api/groovy/util/logging/Commons.html|@Commons]] for Commons-Logging
* [[http://groovy.codehaus.org/api/groovy/util/logging/Log4j.html|@Log4j]] for Log4J
* [[http://groovy.codehaus.org/api/groovy/util/logging/Slf4j.html|@Slf4j]] for SLF4J
===== 특징 =====
어노테이션을 통해 로깅을 할 경우 구문 대체가 발생한다. 예를 들며 다음과 같은 코드는
log.debug('안녕 ' + ' 세상아')
다음과 같이 구문 자체가 대체 된다.
if (log.isDebugEnabled()) {
log.debug('안녕 ' + ' 세상아')
}
**log.debug 안에서 다시 if 로 조건을 검사하는 로직을 호출하는 것이 아니라 애초에 구문 자체를 대체 하므로 실제 debug모드가 아니면 '안녕 ' + ' 세상아' 문자열의 더하기 연산은 일어나지 않게 된다.**
이로 인해 Slf4j방식의 log.debug('안녕 {}', '세상아') 형태의 호출이 필요 없어지게 된다.