2013-11-28 39 views
1

我有一個外部配置文件$ {} USERHOME/Grails的/ $ {APPNAME} /config.groovy導入外部配置值到主配置中的Grails

package configs 

grails.conf.logDirectory = '/home/serek/tmp/mamlog' 

我想進口到主要的Grails的Config.groovy

grails.config.locations = ["file:${userHome}/.grails/${appName}/config.groovy"] 
print grails.conf.logDirectory 
log4j = { 

    appenders { 
     rollingFile name: 'infoLog', file: "${grails.conf.logDirectory}/info.log", threshold: org.apache.log4j.Level.INFO, maxFileSize: "1024MB", append: true 
     rollingFile name: 'warnLog', file: 'warn.log', threshold: org.apache.log4j.Level.WARN, maxFileSize: "1024MB", append: true 
     console name: 'stdout', layout: pattern(conversionPattern: '%d{yyyyMMdd.HHmmss.SSS} %r [%t] %-5p %c %x - %m%n') 
    } 

不幸的是,打印grails.conf.logDirectory在主配置中可見。

我該如何處理?打印僅輸出[:]

Groovy: 2.1.9 
Grails: 2.3.2 

===================================== ===
我找到了解決方案,恩Config.groovy中:

import org.yaml.snakeyaml.Yaml 

    Yaml yaml = new Yaml() 
    def extConfFilePath = "${userHome}/.grails/${appName}/mam.yaml" //my external conf in yaml 
    def extConfFileContent = new File(extConfFilePath).text 
    def extConf = yaml.load(extConfFileContent) 
    grails.ext = extConf 


    rollingFile name: 'infoLog', file: extConf.logDirectory + "info.log", threshold: org.apache.log4j.Level.INFO, maxFileSize: "1024MB", append: true 
+0

這應該工作......你檢查了該文件的文件權限?嘗試從bootstrap.groovy讀取該文件 - 它可能會發現權限問題等。另請嘗試刪除「grails.conf」。部分的情況下,有關於grails的一些特殊情況。*和導入配置。 – nickdos

回答

1

我相信它,因爲外部配置文件後拉昇執行Config.groovy中。因此,該位置處的println不起作用。嘗試從任何gsp頁面打印它,

println "logDir = ${grailsApplication.config.grails.conf.logDirectory}" 
+0

你指出我正確的方向找到我的問題的解決方案,謝謝。 – mrok