あなたはほとんど正しいです。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
(実際には 2 回)。file.properties
行を含む最上位log4jtest
フォルダーに名前の付いたファイルを作成します
logfile.name=from-external.log
アプリを再度実行すると、今回はfilename: from-external.log
代わりに印刷されます。