Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将外部配置值导入grails中的主配置_Grails_Configuration - Fatal编程技术网

将外部配置值导入grails中的主配置

将外部配置值导入grails中的主配置,grails,configuration,Grails,Configuration,我有一个外部配置文件${userHome}/.grails/${appName}/config.groovy: package configs grails.conf.logDirectory = '/home/serek/tmp/mamlog' 我想将其导入到主grails Config.groovy中 grails.config.locations = ["file:${userHome}/.grails/${appName}/config.groovy"] print grails.c

我有一个外部配置文件${userHome}/.grails/${appName}/config.groovy

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')
    }
不幸的是,print grails.conf.logDirectory在主配置中不可见

我怎么办?仅打印输出[:]

Groovy: 2.1.9  
Grails: 2.3.2
==========================================================
我找到了解决方案,ex 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

我认为这是因为外部配置文件是在执行config.groovy之后拉入的。因此,该位置的println不起作用。尝试从任何gsp页面打印它

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

我认为这是因为外部配置文件是在执行config.groovy之后拉入的。因此,该位置的println不起作用。尝试从任何gsp页面打印它

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

那应该有用。。。你检查过该文件的文件权限了吗?尝试从bootstrap.groovy读取该文件-它可能会发现权限等方面的问题。还可以尝试删除“grails.conf”部分,以防grails.*有什么特殊之处,并导入配置。这应该可以工作。。。你检查过该文件的文件权限了吗?尝试从bootstrap.groovy读取该文件-它可能会发现权限等方面的问题。还可以尝试删除“grails.conf”部分,以防grails.*有什么特殊之处,并导入configs。您为我指出了正确的方向,为我的问题找到了解决方案,谢谢。你为我指出了正确的方向,为我的问题找到了解决办法,谢谢。