2013-11-28 1 views
1

У меня есть внешний конфигурационный файл $ {}/домашний каталог Grails/$ {APPNAME} /config.groovy:.Импорта значение внешней конфигурации в основную конфигурацию в Грааль

package configs 

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

, который я хотел бы импортировать в основных граалей 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

Смежные вопросы