2014-05-06 64 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安裝。