使用filter-spec隐藏日志JSON字段值的配置问题及示例咨询
filter-spec隐藏JSON字段值正确配置方案
问题根因
你当前的替换结果不符合预期,是因为原有规则没有保留JSON字段名外层的双引号结构,替换时直接抹掉了字段名后的双引号,导致输出不符合JSON格式要求。
通用正则式配置方案
绝大多数支持filter-spec的日志组件(Logback、Log4j2、Fluentd等)都支持正则捕获组实现精准替换,你可以直接套用以下规则:
- 匹配规则:
("student"\s*:\s*)"[^"]+" - 替换规则:
$1"****"
效果验证
- 原日志内容:
"student" : "testStudent" - 替换后输出:
"student" : "****" - 紧凑格式原内容:
"student":"testStudent" - 替换后输出:
"student":"****"
不同组件适配示例
Log4j2 XML配置示例
<Filter type="RegexFilter" regex="("student"\s*:\s*)"[^"]+"" replacement="$1"****"" onMatch="ACCEPT" onMismatch="NEUTRAL"/>
Fluentd filter配置示例
<filter **> @type record_transformer <record> message ${record["message"].gsub(/("student"\s*:\s*)"[^"]+"/, '\1"****"')} </record> </filter>
特殊场景适配
如果你的JSON字段值可能包含转义双引号(比如"student":"test\"Student"),可以调整匹配规则为("student"\s*:\s*)"(\\"|[^"])*"适配即可。
内容的提问来源于stack exchange,提问作者ysf15
相关产品推荐
相关产品推荐

