2012-03-13 6 views
1

私はこれを使ってサービスとして実行するようにPlayを設定し、log4jに問題があります。Ubuntu Upstart scriptを使用しようとしています。スクリプトは本質的に次のようになります:Playの現在のディレクトリをアプリのホームディレクトリに設定するにはどうすればよいですか?

start-stop-daemon --start --exec /home/ubuntu/programs/play/current/play 
        --chuid ubuntu:ubuntu -- start /home/ubuntu/myapp/src/ --%id 

再生は正常に開始されますが、それではlog4jファイルの作成に失敗します。私はstart-stop-daemonがlog4jのフォルダを正しく設定していないと信じています。 Log4jは、相対パスlogs/play.logにログファイルを作成するように設定されており、これは/home/ubuntu/myapp/logs/play.logに変換されます。フォルダ/home/ubuntu/myapp/logs/は存在しないが、プレイを開始するとき、私はこのエラーを取得:

のlog4j:ERROR setFile(ヌル、真の)呼び出しが失敗しました。 java.io.FileNotFoundException:ログ/ play.log(そのようなファイルやディレクトリ )java.io.FileOutputStreamはでjava.io.FileOutputStream.open(ネイティブメソッド) で (FileOutputStream.java:212) で。プレイのための "カレントディレクトリ" は遊びではないことを意味java.io.FileOutputStreamは。(FileOutputStream.java:136) org.apache.log4j.FileAppender.setFileで(FileAppender.java:294)

ホームディレクター、むしろ何か他の。今、私は絶対log4jパスを提供することによってそれを変更することができますが、それはハックのように思えます、そして、私はPlayの現在のフォルダに頼っている他のコンポーネントが同様の問題を呈するのだろうかと思います。

私はPlayの現在のディレクトリがアプリのhomedirと同じであることをどのように保証できますか?

答えて

2

この溶液は、start-stop-daemonラインに--chdir $HOMEを添加していました。率直であることはかなり自明です。

+0

RedHatにどのように適合させることができますか?そのOS用の起動停止デーモンはありません。ありがとう。 – Meglio

+0

@メグリオ - わかりません。これについて新しい質問をしてみてください。 – ripper234

関連する問題