关闭时无法使用记录器

时间:2012-08-22 15:39:07

标签: groovy

一些奇怪的行为:logger在关闭时不可用 这是怎么回事?

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)  

参数没问题....   感谢

1 个答案:

答案 0 :(得分:2)

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

以下是一个例子:

test = 'output'

printParameters()

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

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