在Wildfly Logger中使用多个过滤器规格

时间:2019-05-20 05:10:37

标签: logging filter wildfly handler wildfly-10

我正在使用 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"
}

但是此日志文件有两个问题:

  1. msg字段包含关键信息(例如密码),我想过滤它们。
  2. 某些信息是多余的,我不想存储它们。 (例如,节点包含“已收到请求”或“调用getDataMethod”)

为解决问题1,我写了这个filter-spec并用regex删除了所有存储桶:

<logger category="org.somePackags.MyClass" use-parent-handlers="false">
    <level name="INFO" />
    <filter-spec value="all(match(&quot;\\[(.*)\\]&quot;),substituteAll(&quot;\\[(.*)\\]&quot;, &quot; &quot;))" />
    <handlers>
        <handler name="JsonLog" />
    </handlers>
</logger>

现在,我想向filter-spec添加规则以排除与问题#2匹配的节点,我读了FilterExpressions,但是我不知道如何编写多个filter-spec。有什么主意吗?

1 个答案:

答案 0 :(得分:1)

all过滤器将处理链中的每个过滤器,如果链中的任何过滤器都认为该消息不可记录,则该消息不会被记录。带有all过滤器的substituteAll似乎是您应该使用的过滤器。您只需在链中添加更多substituteAll过滤器。

您需要弄清楚替换数据的模式。您也可以删除match,因为它看起来仍然可以匹配所有内容。