在已部署的Spring Boot应用程序中配置Logback Appenders



我有一个部署在Docker容器中的Spring Boot应用程序。由于Spring Boot打包了一个可执行的胖jar,到目前为止,我只能通过在打包的jar的资源中包含logback.xml来了解如何配置Logback。

然而,我不认为这是最佳实践,因为它需要重新打包整个jar并重新部署jar,以配置appender设置(例如,更改日志级别或添加新的appender(。

如何在不需要重新打包/重新部署的情况下,将我的Spring Boot应用程序打包为允许配置Logback设置?

编辑:这是我的logback.xml

<configuration>
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>fullLogFile.log</file>
        <append>true</append>
        <immediateFlush>true</immediateFlush>
        <encoder>
            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
        </encoder>
    </appender>
    <appender name="ROLL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>rollingLogFile.%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%relative [%thread] %level %logger - %msg%n</pattern>
        </encoder>
    </appender>
    <logger name="org.my.app" level="trace" />
    <root level="WARN">
        <appender-ref ref="FILE"/>
        <appender-ref ref="ROLL_FILE"/>
    </root>
</configuration>

如何以允许无需配置Logback设置重新包装/重新部署?

只需使用以下参数启动spring-boot jar,并将logback.xml与jar放在同一文件夹中。您还必须从项目资源中删除logback.xml。

-Dlogging.config=./logback.xml

然后,它将从那里阅读并继续进行。

您可以使用docker volume。docker组成示例:

version: '3'
services:
  your-service:
    container_name: service-name
    image: your-service-image
    # environment variable path to your logback volume
    environment:
     - LOGGING_CONFIG=/data/logback_config/logback.xml
    # mount your logback file
    volumes:
      - ./logback.xml:/data/logback_config/logback.xml
    ports:
      - "80:80"

最新更新