我正在使用 Wildfly 10 ,并且我希望将服务器日志存储在带有某些过滤器的json
文件中,这是我的日志:
{
"msg": "\n[\"getDataMethod\" req. received]\n[password: ***]\n[prop2: value2]]\n",
"field1": "value1"
}{
"msg": "\n[call \"getDataMethod\"]\n[password: ***]\n[prop2: value2]]\n",
"field2": "value2"
}{
"msg": "full-XML SOAP request",
"field3": "value3"
}{
"msg": "\n[\"getDataMethod\" finished...]\n[password: ***]\n[prop2: value2]]\n",
"field4": "value4"
}
但是此日志文件有两个问题:
msg
字段包含关键信息(例如密码),我想过滤它们。为解决问题1,我写了这个filter-spec
并用regex
删除了所有存储桶:
<logger category="org.somePackags.MyClass" use-parent-handlers="false">
<level name="INFO" />
<filter-spec value="all(match("\\[(.*)\\]"),substituteAll("\\[(.*)\\]", " "))" />
<handlers>
<handler name="JsonLog" />
</handlers>
</logger>
现在,我想向filter-spec
添加规则以排除与问题#2匹配的节点,我读了FilterExpressions,但是我不知道如何编写多个filter-spec
。有什么主意吗?
答案 0 :(得分:1)
all
过滤器将处理链中的每个过滤器,如果链中的任何过滤器都认为该消息不可记录,则该消息不会被记录。带有all
过滤器的substituteAll
似乎是您应该使用的过滤器。您只需在链中添加更多substituteAll
过滤器。
您需要弄清楚替换数据的模式。您也可以删除match
,因为它看起来仍然可以匹配所有内容。