2016-06-19 4 views
1

Grailsアプリケーションを実行中にjava.util.logging.config.fileを指定しようとしていて、動作していないようです。私は冗長なメッセージを参照してください初めにgrailsアプリケーションのjava -Dオプションを指定しています

export GRAILS_OPTS="-Djava.util.logging.config.file=logging.properties" 
export JAVA_OPTS="-Djava.util.logging.config.file=logging.properties" 
grails -Djava.util.logging.config.file=logging.properties run-job myJob 

しかし、一度フォークジョブプロセッサは、何らかの形で、コマンドラインおよびenvオプションの両方が失われているのGrails: は、ここで私がしようとしているものです。

答えて

1

Grailsはバックグラウンドでバックグラウンドを使用しています。 Gradleはデフォルトでアプリケーションを実行またはテストするために別個のVMを呼び出しており、このVMにはこれらのプロパティが設定されていません。できることは、build.gradleファイルを変更して、システムプロパティをGradle VMからフォークされたVMに渡すことです。このような何かが私たちのために動作します:

bootRun { 
    systemProperty 'server.port', System.getProperty('server.port') 
} 

System.getProperties()を使用してすべてのプロパティを渡すことも可能です。 Googleを使用している場合、これに関する多くの例があります。 https://discuss.gradle.org/t/how-should-i-be-handling-passing-system-properties-from-gradle-to-my-tests/7171

また、logging.propertiesファイルの相対パスを使用している場合、現在のパスが異なる場合があり、絶対パスを使用すると検証に適している場合があります。

+0

この特定のプロパティを手動で渡す際の問題は、ログシステムを再初期化する必要があることです。また、コードを修正して新しいビルドを本番環境にリリースすることなく、これを実現することを望んでいました。フォークが環境変数を保持しない理由は私には分かりません。 –

+0

"手動で渡す"、 "ログを再初期化する"、 "リリース用にコードを変更する"とはどういう意味ですか?あなたはそのような問題を起こすべきではありません。 'build.gradle'では、開発のためだけに使うことができます。プロダクションでは、アプリケーションコンテナ用に設定された標準プロパティを使用できます。 Gradleは私の意見では非常に柔軟です – droggo

+0

手動で渡す - 私は、System.setProperty()のように手動でjavaプロパティを設定することを意味します。しかし、ポイントロギングが初期化されるため、何もしません。私はそれにグレードがどのように果たしているのか、アプリのコンテナの標準的なプロパティの意味を理解していません。また、アプリケーションコンテナはありません。これはアプリコンテナでは実行されていません。 –

関連する問題