我使用Grails
在我的文件Config.groovy
中,我创建了一个appender:
log4j = {
appenders {
file name:'myAppli', file:'/tmp/myAppli.log'
}
...
}
是否可以通过file.properties
?
类似的东西:
file.properties:
myAppli.log.path=C:\\tmp\\
Config.groovy:
appenders {
file name:'myLogs', file:myAppli.log.path + 'myLogs.log'
}
答案 0 :(得分:1)
文档中有一节针对此:externalized configuration。您可以设置绝对位置或让Grails查看类路径。以下是文档的示例:
grails.config.locations = [
"classpath:${appName}-config.properties",
"classpath:${appName}-config.groovy",
"file:${userHome}/.grails/${appName}-config.properties",
"file:${userHome}/.grails/${appName}-config.groovy" ]
编辑:我在这里测试过。似乎该值仅在运行时期间通过配置对象可用,而在Config.groovy中不可用。根据{{3}}帖子,你不可能做你想做的事。
答案 1 :(得分:1)
myAppli.log.path应该可以工作!!!
答案 2 :(得分:0)
你几乎是对的。在解析和组装整个配置后执行log4j
闭包,在闭包内,您可以通过变量config
访问完整配置。你可以说
grails.config.locations = ['file:file.properties']
log4j = {
appenders {
file name:'myAppli', file:"${config.myAppli.log.path}myLogs.log"
}
// ...
}
我已使用Grails 2.2进行了测试:运行grails create-app log4jtest
以创建新应用,然后编辑log4jtest/grails-app/conf/Config.groovy
以添加到顶部
grails.config.locations = ["file:file.properties"]
logfile.name = "from-config.log"
和log4j
关闭
// log4j configuration
log4j = {
println "filename: ${config.logfile.name}"
// rest of closure as before
使用grails run-app
运行此应用,您会看到它打印filename: from-config.log
(实际上是两次)。现在,在包含行
file.properties
文件夹中创建一个名为log4jtest
的文件
logfile.name=from-external.log
再次运行该应用,这次它将打印filename: from-external.log
。