4

私は Play 2.1 を初めて使用し、Play を運用環境にデプロイする最も簡単な方法を見つけようとしています。最も有望な Play 2.1 のすぐに使える機能は、

play dist

これにより、アプリを実行するためのすべてのサポート JAR と、すべてを起動するいくつかの開始シェル スクリプトを含む ZIP ファイルが作成されます。チャンピオンのように機能します。

問題は、私のアプリケーションでは、すぐに使用できるフリーサイズの logs/application.log よりもきめ細かいロギングが必要なことです。私の開発ボックスでは、conf/logger.xml を作成および構成して、コントローラー クラス (実際には任意のクラス) ごとに昔ながらのトピック ロギングを実行する方法を見つけました (実際には任意のクラスですが、今はコントローラーに固執しましょう)。これは、play コンソールを介して実行すると開発ボックスで正常に動作しますが、「play dist」を使用してアプリケーションをビルドし、start シェル スクリプトだけを使用してアプリ サーバーで起動すると、このロガーが構成されているログファイルを取得できません。生産する。また、これらのログがないとわかりませんが、start コマンドもプロジェクト用に構成したグローバル オブジェクトを見つけることができないと思います。

私のアプリケーションである JAR ファイルを調べると、conf/application.conf および conf/logger.xml ファイルが JAR にあることがわかります。アプリケーションの起動時にロードされていません。

開始スクリプトを実行して JAR ファイルから logger.xml をロードするにはどうすればよいですか? コマンドラインで -D を使用して指定する必要がありますか?それとも、アプリケーションの JAR から直接ロードする必要がありますか?

4

1 に答える 1

2

プロダクション開始スクリプトを編集して、Java コマンド ラインに以下を追加することをお勧めします。

-Dconfig.resource=/conf/logger.xml

クラスパスにある場合、ロガー構成が見つかります。(別の方法もあると思います-Dconfig.file)。クラスパスに構成ディレクトリを追加することもお勧めします。これにより、play start コマンドは次のようになります。

MYAPP_HOME=~/myapp
java -cp $MYAPP_HOME:$MYAPP_HOME/lib/* play.core.server.NettyServer $MYAPP_HOME

jar ファイルからではなく、クラスパス内のディレクトリから構成を取得することで、構成を編集したり、別のバージョンを指定したりできます。

于 2013-06-04T15:02:54.013 に答える