如何在logback.xml中读取环境变量启用Spring Boot JSON编码器
Logback根据环境变量切换JSON编码器的解决方案
要实现根据JSON_LOGGING环境变量切换编码器,需要依赖Janino库支持Logback的条件判断,具体步骤如下:
1. 引入Janino依赖
Logback的<if>条件逻辑需要Janino库支持,在项目中添加依赖:
Maven
<dependency> <groupId>org.codehaus.janino</groupId> <artifactId>janino</artifactId> <version>3.1.12</version> </dependency>
Gradle
implementation 'org.codehaus.janino:janino:3.1.12'
2. 修改logback.xml配置
使用env()函数读取环境变量,结合条件标签实现编码器切换:
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <if condition='env("JSON_LOGGING") != null && env("JSON_LOGGING").equalsIgnoreCase("true")'> <then> <encoder class="net.logstash.logback.encoder.LogstashEncoder"> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </then> <else> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </else> </if> </appender>
关键说明
env("JSON_LOGGING"):直接读取系统环境变量的值equalsIgnoreCase("true"):兼容TRUE/True等大小写变体的判断- 若环境变量未设置,默认使用普通编码器分支
内容的提问来源于stack exchange,提问作者marialadelbario
相关产品推荐
相关产品推荐

