在已部署 Spring 启动应用程序中配置 Logback Appenders
Configuring Logback Appenders in Deployed Spring Boot App
我有一个部署在 Docker 容器中的 Spring 启动应用程序。由于 Spring Boot 打包了一个可执行的胖 jar,到目前为止,我只能弄清楚如何通过在打包的 jar 资源中包含 logback.xml
来配置 Logback。
但是,我认为这不是最佳做法,因为它需要重新打包整个 jar 并重新部署 jar 以配置 appender 设置(例如,更改日志级别或添加新的 appender)。
如何打包我的 Spring 引导应用程序,以便在不需要 repackage/redeploy 的情况下配置 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>
您可以使用 docker 音量。示例 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"
How can I package my Spring Boot application in such a way as to allow
the Logback settings to be configured without needing to
repackage/redeploy?
只需使用以下参数启动您的 spring 引导 jar,并将 logback.xml 与该 jar 放在同一文件夹中。您还必须从项目资源中删除 logback.xml。
-Dlogging.config=./logback.xml
然后它将从那里读取并继续。
我有一个部署在 Docker 容器中的 Spring 启动应用程序。由于 Spring Boot 打包了一个可执行的胖 jar,到目前为止,我只能弄清楚如何通过在打包的 jar 资源中包含 logback.xml
来配置 Logback。
但是,我认为这不是最佳做法,因为它需要重新打包整个 jar 并重新部署 jar 以配置 appender 设置(例如,更改日志级别或添加新的 appender)。
如何打包我的 Spring 引导应用程序,以便在不需要 repackage/redeploy 的情况下配置 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>
您可以使用 docker 音量。示例 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"
How can I package my Spring Boot application in such a way as to allow the Logback settings to be configured without needing to repackage/redeploy?
只需使用以下参数启动您的 spring 引导 jar,并将 logback.xml 与该 jar 放在同一文件夹中。您还必须从项目资源中删除 logback.xml。
-Dlogging.config=./logback.xml
然后它将从那里读取并继续。