【问题标题】:How to Extern log4j.properties file with Spring Boot Microservice and Run It As a Linux Service?如何使用 Spring Boot 微服务 Extern log4j.properties 文件并将其作为 Linux 服务运行?
【发布时间】:2018-02-21 09:18:35
【问题描述】:

有一个基于 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

非常感谢。

【问题讨论】:

标签: java linux spring-boot log4j


【解决方案1】:

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

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

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

但请注意,此解决方案并不是真正的最佳实践。一旦您在生产环境中运行了一大堆服务,您可能更愿意采用类似于spring cloud config 的方式来进行外部化配置,并且您可能还希望将您的日志汇总到一个集中式服务中,以便对所有服务进行概览您的服务的日志在一个地方。

【讨论】:

  • 请写一些解释。
  • @Jörg,但是我该如何写这部分(发出符号链接时):-Dlogging.config=/path/to/log4j.properties
  • @PacificNW_Lover 感谢您再次耐心询问 - 请参阅我的更新
【解决方案2】:

根据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

【讨论】:

    猜你喜欢
    • 2022-01-15
    • 2016-01-27
    • 1970-01-01
    • 2020-04-21
    • 2019-02-13
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 2021-01-02
    相关资源
    最近更新 更多