Как установить «текущий каталог» Play в домашний каталог приложения? - PullRequest
1 голос
/ 13 марта 2012

Я пытаюсь использовать этот скрипт Ubuntu Upstart для настройки Play для запуска в качестве службы, и у меня возникли проблемы с log4j. Сценарий по сути делает:

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: ОШИБКА вызов setFile (null, true) не выполнен. java.io.FileNotFoundException: logs / 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)

Это означает, что «текущая директория» для Play - это не домашняя директория play, а нечто иное. Теперь я могу изменить его, указав абсолютный путь log4j, но это похоже на хак, и мне интересно, будут ли другие компоненты, использующие текущую папку Play, сталкиваться с подобными проблемами.

Итак, как я могу убедиться, что текущий каталог Play идентичен homedir приложения?

1 Ответ

2 голосов
/ 13 марта 2012

Решением было добавление --chdir $HOME к строке start-stop-daemon.Довольно банально быть откровенным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...