发布网友 发布时间:2022-11-07 09:01
共1个回答
热心网友 时间:2023-11-02 06:56
简单来说,log4j2中的过滤器主要是对日志的输出进行过滤,符合条件的日志可以被当前过滤器通过,进入到后续的处理;不符合条件的日志应该被忽略,不做处理。这是比较常见的使用方式,文末的相关文章里对于过滤器的使用作出了较为详细的说明,这里主要总结一下个人的实践感悟。
MapFilter主要是对 MapMessage(log4j2框架中的类) 进行过滤,一般的日志信息,此过滤器不会处理,举例来说,专门处理类似以下方法中的参数。
分析与MapFilter几乎一致。对于日志信息中的标记进行过滤,看一下 Logger 类的 info() 方法,如下:
特定的Marker标记的信息可以通过过滤,否则不会通过过滤(包括没有使用Marker)。
符合正则表达式的日志信息才会通过过滤器,看如下appender:
正则表达式 .* test .* 表示若干个任意字符(排除若干个,这里不做说明) + 空格 + test单词 + 空格 + 若干个任意字符。
例如: i an a test 是不符合要求的,因为test后面没有空格。