我有一个部署在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"