====== 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('안녕 {}', '세상아') 형태의 호출이 필요 없어지게 된다.