Groovy的日志是基于JDK的日志设施的,如果你对此主题还比较陌生的话,请查看一下JDK日志系统的文档。
为了能够跟踪到Groovy是如何调用MetaMethods,我们需要做一下如下设置:
在%JAVA_HOME%/jre/lib/logging.properties文件或者同等效果的文件:
java.util.logging.ConsoleHandler.level = ALL
groovy.lang.MetaClass.level = FINER
# trace all method calls
methodCalls.level = FINER
# trace method calls to the 'String' class
methodCalls.java.lang.String.level = FINER
# trace method calls to Object.println()
methodCalls.java.lang.Object.println.level = FINER
示例:
通过Groovy命令行脚本跟踪所有方法调用代码如下:(德国 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
log4j和Groovy结合有一个问题:脚本名称和行数是错误的。Groovy使用的字节码让log4j不能识别,这在调试和根据类过滤信息的时候,是一个很大的问题。
现在已经有了一个LOG4J的补丁可以解决此问题了,通过补丁,LOG4J可以争取的显示文件名称和行数,更多信息请看: http://www.kotek.net/projects/log4j-groovy