我用于记录 Log4J
我的附加程序配置
<RollingFile name="FILE-LOGSTASH"
fileName="C:\Users\p.bohomaz\IdeaProjects\o2-lcm\log4j-logstash.log"
filePattern="C:\Users\p.bohomaz\IdeaProjects\o2-lcm\log4j-logstash-%d{yyyy-MM-dd-HH}.log.gz">
<LogStashJsonLayout/>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
</RollingFile>
我的问题是,有时在日志中我会收到普通的电话号码 我想将其替换为 3********9
我发现 LogStashJsonLayout 已弃用,没有此选项,我需要使用 JsonTemplateLayout
所以我将我的配置更改为这个
<RollingFile name="FILE-LOGSTASH"
fileName="C:\Users\p.bohomaz\IdeaProjects\o2-lcm\log4j-logstash.log"
filePattern="C:\Users\p.bohomaz\IdeaProjects\o2-lcm\log4j-logstash-%d{yyyy-MM-dd-HH}.log.gz">
<JsonTemplateLayout eventTemplateUri="classpath:EcsLayout.json"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
</RollingFile>
和我的 json 模板文件
{
"@version": "1",
"@timestamp": {
"$resolver": "timestamp",
"pattern": {
"format": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
"timeZone": "UTC"
}
},
"logger": {
"$resolver": "logger",
"field": "name"
},
"priority": {
"$resolver": "level",
"field": "name"
},
"thread": {
"$resolver": "thread",
"field": "name"
},
"message": {
"$resolver": "message",
"replace": {
"regex": "(\\d{2})(\\d{7,11})(\\d{2})",
"replacement": "$1********$3"
}
}
}
但我仍然在日志中看到普通数字 我检查了文档,发现我需要使用 pattern.replace(regex,replacement) 但它也不起作用 有人可以帮忙吗? 是否可以在模板中执行此操作还是我需要为其创建过滤器?
JSON 模板布局的
message
解析器没有 replace
配置 - 请参阅其文档。您可以使用 pattern
解析器 回退到模式布局并使用 其 replace
转换器:
{
"message": {
"$resolver": "pattern",
"pattern": "%replace{%msg}{(\\d{2})(\\d{7,11})(\\d{2})}{$1********$3}"
}
}