logback.xml中请求响应日志敏感数据掩码失效问题求助
解决Logback请求响应日志掩码失效问题
问题根源
你配置的Request、Response日志记录器(logger)没有关联到带有脱敏逻辑的DATA_MASK appender,它们默认使用了其他未配置掩码的输出器,导致脱敏规则不生效。
解决方案
方案1:将请求响应日志绑定到脱敏Appender
修改你的Request、Response logger配置,明确指定使用DATA_MASK appender,同时可关闭日志继承避免重复输出:
<logger name="Request" level="DEBUG" additivity="false"> <appender-ref ref="DATA_MASK" /> </logger> <logger name="Response" level="DEBUG" additivity="false"> <appender-ref ref="DATA_MASK" /> </logger>
additivity="false":防止日志同时输出到root logger关联的其他appender,避免重复打印。- 配置后
Request和Response的日志会完全通过DATA_MASKappender输出,自然应用你的脱敏规则。
方案2:调整掩码规则匹配日志格式
如果请求响应日志的格式和你脱敏规则针对的JSON格式不一致(比如是纯文本或其他结构),需要修改maskPattern适配实际日志内容:
- 假设请求日志格式为
creditCardNumber: 1234567890123456,则调整掩码规则:
<maskPattern>creditCardNumber\s*:\s*(.*?)(\s|$)</maskPattern>
- 确保正则表达式能精准匹配日志中的敏感字段,可根据实际日志结构灵活调整
maskPattern。
方案3:给默认输出Appender添加脱敏逻辑
如果Request、Response日志原本使用的是其他Appender(比如默认控制台Appender),可直接修改该Appender的编码器,替换为你的MaskingPatternLayout:
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> <layout class="com.masking.MaskingPatternLayout"> <maskPattern>"creditCardNumber"\s*:\s*"(.*?)"</maskPattern> <Pattern>${logback.detailedroot}</Pattern> </layout> </encoder> </appender>
内容的提问来源于stack exchange,提问作者furkan brgl
相关产品推荐
相关产品推荐

