您可能有一個外部配置文件,由您的應用程序在啓動時搜索。
您的生產環境中會包含MyExternalConfig.groovy文件。例如:
log4j = {
def catalinaBase = System.properties.getProperty('catalina.base')
if (!catalinaBase) catalinaBase = '.'
def logDirectory = "${catalinaBase}/logs"
appenders {
rollingFile name:"infoLog", maxFileSize:'900KB', file:"${logDirectory}/${appName}Info.log", maxBackupIndex:10, layout:pattern(conversionPattern: '%d{DATE} %p %c - %m%n'), threshold: org.apache.log4j.Level.INFO
rollingFile name:"erroLog", maxFileSize:'900KB', file:"${logDirectory}/${appName}Erro.log", maxBackupIndex:10, layout:pattern(conversionPattern: '%d{DATE} %p %c - %m%n'), threshold: org.apache.log4j.Level.ERROR
}
root {
info 'infoLog', 'erroLog'
additivity = false
}
error erroLog:"StackTrace"
error erroLog: 'org.codehaus.groovy.grails.web.servlet', // controllers
'org.codehaus.groovy.grails.web.pages', // GSP
'net.sf.ehcache.hibernate'
warn infoLog: 'org.mortbay.log'
info infoLog: "grails.app"
}
然後在您的Config.groovy中的文件,屬於在conf文件夾你的Grails項目,你把這個作爲文件的最後一件事:
def ENV_NAME = "MY_EXTERNAL_CONFIG"
if(!grails.config.locations || !(grails.config.locations instanceof List)) {
grails.config.locations = []
}
if(System.getenv(ENV_NAME)) {
grails.config.locations << "file:" + System.getenv(ENV_NAME)
} else if(System.getProperty(ENV_NAME)) {
grails.config.locations << "file:" + System.getProperty(ENV_NAME)
} else {
println "No external configuration file defined."
}
這將尋找外部配置文件添加到您的Config.groovy的grails.config.locations屬性中。首先它將它看作一個系統環境變量(我以這種方式使用它),如果它找不到,那麼它會查找一個命令行參數(這樣您可以在啓動tomcat應用程序時添加它作爲啓動參數.SH)。
要配置系統環境variabble,只是這樣做的tomcat開始之前:
MY_EXTERNAL_CONFIG="/home/tomcat/configs/MyExternalConfig.groovy"
export MY_EXTERNAL_CONFIG
--- start tomcat here ---
就是這樣。
如果修改了「MyExternalConfig.groovy」,此解決方案是否會更新正在運行的應用程序中的日誌記錄設置?試圖避免重新啓動。 –