You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 11:15:36