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

如何让Logback Marker输出无方括号?用于日志分类隔离

解决Logback Marker输出log_type为字符串而非数组的问题

因为你所有的Marker都只有单个类别,要把"log_type":["APPLICATION"]改成"log_type": "APPLICATION",有两种简单方案:

方案一:用Logstash编码器自带配置(推荐)

如果你用的是logstash-logback-encoder,直接在编码器配置里调整Marker的输出规则就行,不用写代码:

<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
    <providers>
        <!-- 保留你原来的其他字段配置 -->
        <marker>
            <!-- 指定输出字段名为log_type -->
            <fieldName>log_type</fieldName>
            <!-- 开启单字段模式,直接输出Marker名称而非数组 -->
            <singleField>true</singleField>
        </marker>
    </providers>
</encoder>

方案二:自定义Logback转换器

如果不想依赖Logstash编码器的特性,可以自己写个转换器来处理Marker:

  1. 写一个自定义转换器类:
import ch.qos.logback.classic.pattern.MarkerConverter;
import ch.qos.logback.classic.spi.ILoggingEvent;

public class SingleMarkerConverter extends MarkerConverter {
    @Override
    public String convert(ILoggingEvent event) {
        if (event.getMarker() == null) {
            return "\"\"";
        }
        // 直接返回带引号的Marker名称
        return "\"" + event.getMarker().getName() + "\"";
    }
}
  1. 在Logback配置文件里注册并使用这个转换器:
<configuration>
    <!-- 注册自定义转换器,指定转换词为singleMarker -->
    <conversionRule conversionWord="singleMarker" converterClass="你的包路径.SingleMarkerConverter" />
    
    <appender name="JSON_APPENDER" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <pattern>
                    <pattern>
                        {
                            "log_type": %singleMarker,
                            <!-- 其他字段配置保持不变 -->
                            "@timestamp": "%date{ISO8601}"
                        }
                    </pattern>
                </pattern>
            </providers>
        </encoder>
    </appender>
</configuration>

内容的提问来源于stack exchange,提问作者snp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 08:40:05