我正在尝试使用此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相同?
答案 0 :(得分:2)
解决方案是将--chdir $HOME
添加到start-stop-daemon
行。毫无疑问坦率地说。