2014-05-06 65 views
0

我只是尝试从groovy阅读grails配置。 ConfigSlurper易于使用,但由于它执行配置,它需要所有的依赖关系。在我的情况下,它抱怨失踪的log4j类。 即使我将此类导入到我的ConfigSlurper脚本中,配置本身也会遇到此问题。从groovy阅读Grails配置

任何想法我怎么可以使log4j类访问配置?

更新:现在,我在我的面前适当的键盘,我可以详细说明我的问题:

我作为文档描述的配置log4j Grails的配置:

import org.apache.log4j.* 

log4j = { 
    appenders { 
    appender new RollingFileAppender( 
     name: "myAppender", 
     maxFileSize: 1024, 
     file: "/tmp/logs/myApp.log" 
    ) 
    } 
} 

然后我试图分析它们是这样的:

def file = new File(<config location>) 
def config = new ConfigSlurper().parse(file.toURL()) 

和Slurper抛出一个异常...

+0

如果你是超级对任何具有对log4j类的静态引用的Groovy代码(配置文件或其他),那些log4j类需要位于类路径中。 –

+0

这就是我虽然但无法解决的问题。我在groovyConsole中尝试了我的脚本。在脚本中创建新的RollingFileAppender不是问题,但ConfigSlurper仍然抱怨。但是我发现了一个更好的方法来完全避免它在我的配置文件中......在当前的文档中找到它。 – rdmueller

+0

你说过“即使我把这个类导入到我的ConfigSlurper脚本中”。导入是不够的。如果类在类加载器中不可用,那么导入将不起作用,这通常意味着类路径上可用。 –

回答

0

我发现了两种解决方案:

首先,文档显示了如何配置rollingFileAppender而不实例化一个方法:http://grails.org/doc/2.3.7/guide/conf.html

其次,我设法与

@Grab('log4j:log4j:') 

解决我原来的问题,在我的剧本面前 - 不,如果你是在防火墙后面一个很好的解决方案......

杰夫已经说过,也应该可以将正确的jar文件放在类路径中,但我必须说我经常与cp :-((当我试图将log4j.jar放入.groovy文件夹中时,我没有成功 - 但我想这是因为不合适的groovy安装。