2012-08-22 33 views
0

一些奇怪的行爲:記錄器不可用於關閉 這裏發生了什麼?記錄器不可用於關閉

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

嘗試在printParameters之後插入一個=符號。例如。 def printParameters = {[etc ...]} –

+0

你得到了什麼樣的錯誤? NPE運行printParameters?如果是的話,@Johnny Wey回答 – Will

+0

這是在一個班級或腳本? –

回答

1

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")應該解決您的問題。

+0

優秀的建議,謝謝! – Toren