Groovy 记录器在关闭时不可用

Groovy 记录器在关闭时不可用,groovy,Groovy,一些奇怪的行为:记录器在闭包中不可用 这是怎么回事 Logger logger = Logger.getLogger("groovy.my.foo"); def printParameters() { if(logger.isDebugEnabled()) logger.debug("print parameters") binding.variables.each { key, value -> logger.debug("Name=$

一些奇怪的行为:记录器在闭包中不可用 这是怎么回事

Logger logger = Logger.getLogger("groovy.my.foo");

def printParameters() {
    if(logger.isDebugEnabled())
        logger.debug("print parameters")

    binding.variables.each { key, value ->
        logger.debug("Name=$key value= $value");
    }
} 
仅在提供记录器的情况下工作

 def printParameters(Logger logger)  
参数没有问题。。。。
谢谢

Groovy脚本中的变量是。如果使用类型或
def
它被定义为局部变量,并且在方法中不可访问。如果声明的变量没有类型或
def
,它将添加到脚本的绑定中,并可用于其他方法

下面是一个例子:

test = 'output'

printParameters()

def printParameters() {
    binding.variables.each { key, value ->
        println "$test: key=$key, value=$value"
    }
} 

在您的情况下,将记录器实例定义为
logger=logger.getLogger(“groovy.my.foo”)
应该可以解决您的问题。

尝试在printParameters之后插入一个=符号。例如,def printParameters={[etc…]}您遇到了什么样的错误?运行printParameters时的NPE?如果是的,@Johnny Wey回答说这是在课堂上还是在脚本中?