如何使用Spring Boot微服务extern log4j.properties文件并将其作为Linux服务运行?

时间:2017-09-12 19:54:10

标签: java linux spring-boot log4j

使用基于Spring Boot(1.5.4.RELEASE)的微服务,我将jar部署到AWS EC实例(Linux环境)。现在,我还部署了一个外部log4j.properties文件,所以我必须像这样启动微服务:

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

如何将此Spring Boot微服务配置为Linux服务,我可以使用这些标志启动和停止它:

sudo service myapp start | stop | status | restart

非常感谢。

2 个答案:

答案 0 :(得分:5)

使用指向springboot应用程序的符号链接,您可以将其作为服务进行控制......

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

application.properties放入myapp文件夹,您可以覆盖应用内捆绑的那个。这样您就不需要使用命令行开关。只需将日志配置的路径指定为其内部属性键logging.config的值。

但请注意,此解决方案并非真正的最佳做法。一旦您在生产中运行了大量服务,您可能更愿意采用spring cloud config的方式来进行外部化配置,并且您可能还希望将您的日志聚合在一个允许概述的集中服务上将您所有服务的日志放在一个地方。

答案 1 :(得分:1)

根据spring-boot deployment

  

完全可执行的jar可以像任何其他可执行二进制文件一样执行,也可以使用init.dsystemd

注册

确保使用下面的插件(共享链接中的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文件完成 - 所有这些都在文档中指定。

  

JARFILEAPP_NAME外,设置均可   使用.conf文件配置。该文件预计在jar旁边   文件并具有相同的名称,但后缀为.conf而不是.jar。   例如,名为/var/myapp/myapp.jar的jar将使用   配置文件名为/var/myapp/myapp.conf。

如下: myapp.conf

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