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

如何在不覆盖Spring Boot默认日志格式的情况下配置Logback过滤器

保留Spring Boot默认日志编码器同时使用自定义Logback过滤器的实现方法

完全可行,核心思路是复用Spring Boot默认的Logback配置片段,避免完全重写Appender导致丢失默认编码器设置,同时将自定义过滤器关联到默认的CONSOLE Appender上。

问题根源

  • 直接添加的RedactFilter未被调用:Spring Boot的CONSOLE Appender是自动配置的,单独定义的过滤器如果没有关联到该Appender,不会被触发。
  • 重定义CONSOLE Appender必须指定encoder:Logback要求所有输出Appender必须配置encoder,重写Appender时会覆盖Spring Boot的默认配置,所以必须显式复用默认的编码器参数。

两种实现方案

方案1:修改默认CONSOLE Appender,添加过滤器

通过引入Spring Boot官方的Logback配置片段,直接在默认的CONSOLE Appender上追加自定义过滤器,完全保留默认编码器:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 引入Spring Boot默认的基础配置和控制台Appender配置 -->
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>

    <!-- 给默认的CONSOLE Appender添加自定义过滤器 -->
    <appender name="CONSOLE" ref="CONSOLE">
        <filter class="com.yourpackage.RedactFilter">
            <!-- 这里添加过滤器的配置参数,比如需要脱敏的字段规则 -->
            <param name="redactPatterns" value="password=.*?,token=.*?"/>
        </filter>
    </appender>

    <!-- 根日志级别配置 -->
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
    </root>
</configuration>

方案2:重定义CONSOLE Appender,复用默认编码器参数

如果需要对Appender做更多自定义,可重新定义CONSOLE Appender,但使用Spring Boot预定义的日志格式和编码参数,保留默认编码器行为:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 引入Spring Boot默认配置,加载预定义的日志参数 -->
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>

    <!-- 重定义CONSOLE Appender,复用默认的日志格式和编码 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <!-- 使用Spring Boot默认的日志格式和字符集 -->
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>${CONSOLE_LOG_CHARSET}</charset>
        </encoder>
        <!-- 添加自定义过滤器 -->
        <filter class="com.yourpackage.RedactFilter">
            <param name="redactPatterns" value="password=.*?,token=.*?"/>
        </filter>
    </appender>

    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
    </root>
</configuration>

说明

  • CONSOLE_LOG_PATTERN和CONSOLE_LOG_CHARSET是Spring Boot自动配置的属性,对应默认的日志输出格式和编码,无需手动编写复杂pattern。
  • 两种方案都能确保RedactFilter被正确调用,同时保留Spring Boot默认的日志编码器行为(如颜色输出、默认格式等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 20:04:55