0

我用Grails

在我的文件中Config.groovy ,我创建了一个附加程序:

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'
}
4

3 回答 3

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 中不可用。根据这个线程,不可能做你想做的事。

于 2013-01-25T15:43:15.140 回答
1

myAppli.log.path 应该可以工作!!!

于 2013-01-28T09:57:54.627 回答
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

于 2013-01-25T16:45:40.803 回答