您可能有一个外部配置文件,由您的应用程序在启动时搜索。
您的生产环境中会包含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”,此解决方案是否会更新正在运行的应用程序中的日志记录设置?试图避免重新启动。 –