Configuration

Basic configuration of the standard JDK to show logging methods can be accomplished with the following procedure:

In file %JAVA_HOME%/jre/lib/logging.properties or equivalent

@Log

You can annotate your classes with the @Log transformation to automatically inject a logger in your Groovy classes, under the log property. Four kind of loggers are actually available:

Here's a sample usage of the @Log transformation:

import groovy.util.logging.*

@Log
class Car {
    Car() {
        log.info 'Car constructed'
    }
}

def c = new Car()

You can change the name of the logger by specifying a different name, for instance with @Log('myLoggerName').

Another particularity of these logger AST transformations is that they take care of wrapping and safe-guarding logger calls with the usual isSomeLevelEnabled() calls. So when you write log.info 'Car constructed', the generated code is actually equivalent to:

if (log.isLoggable(Level.INFO)) {
    log.info 'Car constructed'
}

Tracing Method Calls

In order to enable tracing of how Groovy calls MetaMethods, use the following settings:

in file %JAVA_HOME%/jre/lib/logging.properties or equivalent

Example:
with tracing enabled for all method calls a Groovy command line
script appears as follows (German locale)

$ groovy -e "println 'hi'"
13.09.2005 14:33:05 script_from_command_line run()
FEINER: called from MetaClass.invokeMethod
13.09.2005 14:33:05 script_from_command_line println('hi')
FEINER: called from MetaClass.invokeMethod
hi

See Also