あなたはほとんど正しいです。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代わりに印刷されます。