Запустить сценарий оболочки из "play dist" не удается найти logger.xml в файле JAR

Я новичок в Play 2.1 и пытаюсь найти самый простой способ развертывания Play в нашей среде ops. Самая многообещающая возможность Play 2.1 из коробки -

play dist

Который создает ZIP-файл, который содержит все поддерживающие JAR-файлы для запуска моего приложения, а также некоторый скрипт запуска оболочки, который запускает все это. Работает как чемпион.

Проблема в том, что моему приложению требуется более детальное ведение журнала, чем предусмотрено готовым журналом one-size-fits-all logs /application.log. На своем компьютере разработчика я выяснил, как создать и настроить файл conf/logger.xml для ведения журналов тем старой школы для каждого класса контроллера (на самом деле, любого класса, но пока давайте придерживаться контроллеров). Это отлично работает на моем устройстве dev, когда я запускаю игровую консоль, но когда я создаю свое приложение через "play dist" и запускаю его на сервере приложений только с помощью скрипта запуска оболочки, я никогда не получаю файлы журнала, настроенные этим регистратором производить. Я также верю, но без этих журналов я не знаю, что команда запуска также не может найти глобальный объект, который я настроил для своего проекта.

Просматривая файл JAR, который является моим приложением, я вижу, что файлы conf /application.conf и conf/logger.xml находятся в JAR, они просто не загружаются при запуске приложения.

Как получить выполнение сценария запуска для загрузки файла logger.xml из файла JAR? Мне действительно нужно указывать его в командной строке с помощью -D или он должен загружаться непосредственно из JAR приложения?

1 ответ

Я рекомендую отредактировать сценарий запуска производства, добавив в командную строку Java следующее:

-Dconfig.resource=/conf/logger.xml

Это найдет конфигурацию логгера, если она находится в вашем classpath. (Я думаю, что есть также -Dconfig.file альтернатива). Я также рекомендую добавить каталог конфигурации в ваш classpath, чтобы ваша команда начала игры была примерно такой:

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

Получая конфигурацию из каталога в вашем classpath, а не из jar-файла, вы получаете возможность редактировать его или указывать разные версии.

Другие вопросы по тегам