我有一个名为myScript.groovy的groovy脚本,我使用“java cp.myScript”从命令行运行。 我试图添加log4j记录器,但继续得到无法从静态方法类型的错误访问非静态变量,如果我将logger定义为静态编译器抱怨说我不能这样做。我意识到的问题是因为这是一个时髦的脚本,而不是一个类。
我尝试了@Field和@ Log4j注释没有任何运气。有人可以帮助我了解如何做到这一点吗?
以下是我的代码的样子:
def var1 = getVar1()
def var2 = getVar2()
Logger log = Logger.getLogger(getClass())
// @Log4j here gave compilation error
def static void doSomething()
{
// do something
// how to access log from this static method? defining log as static throws compilation error
log.info "trying to access logger from static method"
}
答案 0 :(得分:0)
@Log Annotation必须在类上注释。
以下来自文档的示例
import groovy.util.logging.*
@Log
class Car {
Car() {
log.info 'Car constructed'
}
}
def c = new Car()
答案 1 :(得分:0)
如果你需要你的方法是静态的,并且如果将参数传递给静态方法不是一个好的选择,你可以让方法获得它自己对命名记录器的引用。
def static void doSomething()
{
Logger log = Logger.getLogger(getClass().getName())
// do something
// how to access log from this static method? defining log as static throws compilation error
log.info "trying to access logger from static method"
}