2013-06-03 41 views
4

我是Play 2.1的新手,正試圖找出將Play部署到我們的操作環境的最簡單方法。該出的現成播放2.1功能,擁有最有希望是從「play dist」啓動shell腳本無法在JAR文件中找到logger.xml

play dist 

它建立一個包含所有支持JAR來運行我的應用程序,它啓動了整個ZIP文件以及一些啓動shell腳本事情。像冠軍一樣工作。

問題是我的應用程序需要更多的細粒度日誌記錄,而不是現成的單一大小日誌/ application.log所提供的日誌。在我的開發箱中,我想出瞭如何創建和配置conf/logger.xml來爲每個控制器類執行老派主題日誌記錄(實際上任何類,但現在讓我們繼續使用控制器)。當我運行遊戲控制檯時,這在我的開發框中工作正常,但是當通過「play dist」構建我的應用程序並使用啓動shell腳本在應用程序服務器上啓動它時,我從來沒有獲得配置此記錄器的日誌文件生產。我也相信,但沒有這些日誌我不知道,啓動命令也無法找到我爲我的項目配置的全局對象。

調查我的應用程序的JAR文件我可以看到conf/application.conf和conf/logger.xml文件位於JAR中,它們只是在應用程序啓動時未加載。

如何獲取啓動腳本的執行以從JAR文件加載logger.xml?我真的不得不在命令行上用-D指定它,還是應該直接從應用程序的JAR中加載?

回答

2

我建議編輯製作啓動腳本以下添加到您的java命令行:

-Dconfig.resource=/conf/logger.xml 

這將找到記錄儀的配置,如果它在你的classpath。 (我認爲還有一個-Dconfig.file替代方案)。我還建議增加一個配置目錄到類路徑,所以你的遊戲開始命令是這樣的:

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

通過在classpath中,而不是從一個jar文件的目錄讓你的配置,你獲得的能力編輯它,或者指定不同的版本。

+0

我得出了類似的結論。 ZIP文件+由「play dist」生成的啓動腳本務必在生產機器上用-D進行修改,以使其正常工作。這感覺就像是對我來說「玩遊戲」的錯誤,但它可以解決。 –

+0

Play 2.1.1中沒有辦法讓它進入類路徑從應用程序的JAR中加載logger.xml。 -Dlogger.resource = logger.xml無法找到該文件。我只通過將logger.xml複製到分發目錄和-Dlogger.file = conf/logger.xml來獲得成功。嘆。 –

+0

有趣!我仍然在Play 2.0.4上。您可以通過嘗試'.getClass()。getResource(「/ conf/logger.xml」')來調查logger.xml是否在您的類路徑中。無論如何,我發現我需要編寫自己的啓動腳本,其他原因。 –