Я пытаюсь использовать этот скрипт 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 приложения?