Подтвердить что ты не робот

Как Extern log4j.properties файл с помощью Spring Boot Microservice и запустить его как службу Linux?

У вас есть микросервис на основе Spring Boot (1.5.4.RELEASE), который я использую банку для экземпляра AWS EC (среда Linux). Теперь я также развертываю внешний файл log4j.properties, поэтому мне нужно запустить микросервис следующим образом:

java -jar myapp.jar -Dlogging.config=/path/to/log4j.properties

Как настроить этот Spring Boot Microservice как службу Linux, где я могу запустить и остановить его с помощью этих флагов:

sudo service myapp start | stop | status | restart

Большое спасибо.

4b9b3361

Ответ 1

Используя символическую ссылку на ваше приложение springboot, вы можете сделать его управляемым как сервис...

sudo ln -s /var/myapp/myapp.jar /etc/init.d/myapp

Поместите application.properties в свою папку myapp, вы можете переопределить ту, что включена в ваше приложение. Таким образом вам не нужно использовать ключи командной строки. Просто укажите путь к вашей конфигурации журнала как значение для ключа свойства logging.config внутри него.

ЗАМЕЧАНИЕ, что это решение не является лучшей практикой. Когда вы запускаете целую кучу сервисов на производстве, скорее всего, вы захотите пойти на что-то вроде spring cloud config для экстернализации конфигурации, и вы, вероятно, также хотите, чтобы ваши журналы были агрегированы в централизованной службе, что позволяет просматривать все журналы ваших служб в одном месте.

Ответ 2

По spring -boot deploy,

Полностью исполняемый банку может быть выполнен как любой другой исполняемый двоичный файл или он может быть зарегистрирован с помощью init.d или systemd

Убедитесь, что вы создаете приложение, используя подключаемый модуль ниже (gradle версия в общей ссылке):

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <executable>true</executable>
    </configuration>
</plugin>

и как показано Jörg, создайте символическую ссылку внутри init.d: ​​

sudo ln -s /var/myapp/myapp.jar /etc/init.d/myapp

Это упрощенная версия:)

В дополнение к вашему вопросу вам нужно настроить init, и это может быть сделано с помощью файла conf - все это указано в документации.

За исключением JARFILE и APP_NAME, настройки могут быть настроенный с использованием .conf файла. Файл ожидается рядом с банкой файл и имеют то же имя, но суффикс с .conf, а не с .jar. Например, банка с именем /var/myapp/myapp.jar будет использовать файл конфигурации с именем /var/myapp/myapp.conf.

например: myapp.conf

JAVA_OPTS=-Xmx1024M
LOG_FOLDER=/custom/log/folder