2012-03-13 69 views
1

我試圖用這個Ubuntu Upstart script來設置Play作爲服務來運行,並且在使用log4j時遇到問題。該腳本實質上是:如何將Play的「當前目錄」設置爲應用程序的homedir?

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

播放啓動ok,但它然後無法創建log4j文件。我認爲start-stop-daemon沒有正確設置log4j的文件夾。 Log4j配置爲在相對路徑logs/play.log上創建日誌文件,該文件轉換爲/home/ubuntu/myapp/logs/play.log。文件夾/home/ubuntu/myapp/logs/確實存在,但播放開始時出現此錯誤:

log4j:錯誤setFile(null,true)調用失敗。 java.io.FileNotFoundException:原木/ play.log(沒有這樣的文件或目錄 ) 在java.io.FileOutputStream.open(本機方法) 在java.io.FileOutputStream中(FileOutputStream.java:212) 的。 java.io.FileOutputStream中。(FileOutputStream.java:136) 在org.apache.log4j.FileAppender.setFile(FileAppender.java:294)

含義是 「當前目錄」 的遊戲是沒的打家庭目錄,而是其他的東西。現在,我可以通過提供一個絕對的log4j路徑來改變它,但它看起來像一個黑客,我不知道依賴於Play當前文件夾的其他組件是否會出現類似的問題。

那麼,我如何確保Play的當前目錄與應用程序的homedir完全相同?

回答

2

該解決方案將--chdir $HOME添加到start-stop-daemon行。很坦率地坦率。

+0

它如何適應RedHat?該OS沒有啓動 - 停止守護進程。謝謝。 – Meglio 2012-07-25 15:03:10

+0

@Meglio - 我不確定。試着問一個關於這個問題的新問題。 – ripper234 2012-07-25 15:08:12

相關問題