如何将Play的“当前目录”设置为应用程序的homedir?

时间:2012-03-13 18:18:21

标签: ubuntu playframework

我正在尝试使用此Ubuntu Upstart script将Play设置为作为服务运行,并且遇到log4j问题。该脚本基本上是这样做的:

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

Play启动正常,但无法创建log4j文件。我相信start-stop-daemon没有正确设置log4j的文件夹。 Log4j配置为以相对路径logs/play.log创建日志文件,转换为/home/ubuntu/myapp/logs/play.log。文件夹/home/ubuntu/myapp/logs/确实存在,但是在Play开始时我收到此错误:

  

log4j:ERROR setFile(null,true)调用失败。   java.io.FileNotFoundException:logs / play.log(没有这样的文件或   目录)           at java.io.FileOutputStream.open(Native Method)           在java.io.FileOutputStream。(FileOutputStream.java:212)           在java.io.FileOutputStream。(FileOutputStream.java:136)           在org.apache.log4j.FileAppender.setFile(FileAppender.java:294)

意味着Play的“当前目录”不是播放主目录,而是其他内容。现在,我可以通过提供一个绝对的log4j路径来改变它,但它似乎是一个黑客,我想知道依赖Play当前文件夹的其他组件是否会出现类似的问题。

那么,我如何确保Play的当前目录与应用程序的homedir相同?

1 个答案:

答案 0 :(得分:2)

解决方案是将--chdir $HOME添加到start-stop-daemon行。毫无疑问坦率地说。