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

myAppli.log.path が機能するはずです!!!

于 2013-01-28T09:57:54.627 に答える
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 に答える
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(実際には 2 回)。file.properties行を含む最上位log4jtestフォルダーに名前の付いたファイルを作成します

logfile.name=from-external.log

アプリを再度実行すると、今回はfilename: from-external.log代わりに印刷されます。

于 2013-01-25T16:45:40.803 に答える