您在使用Logtail采集日志时,您可以使用processor_filter_regex插件或processor_filter_key_regex插件过滤日志。本文介绍各个插件的参数说明和配置示例。
使用限制
- 文本日志和容器标准输出只支持表单配置方式,其余输入插件只支持JSON配置方式。 
- Go语言的正则表达式引擎基于RE2实现,相比PCRE引擎存在以下限制: - 命名分组语法差异 - Go使用 - (?P<name>...)语法,而非PCRE的- (?<name>...)语法。
- 不支持的正则模式 - 断言: - (?=...)、- (?!...)、- (?<=...)、- (?<!...)。
- 条件表达式: - (?(condition)true|false)。
- 递归匹配: - (?R)、- (?0)。
- 子程序引用: - (?&name)、- (?P>name)。
- 原子组: - (?>...)。
 
 - 建议使用Regex101等调试正则时,避免使用以上不支持的正则模式,否则插件将无法处理。 
功能入口
当您需要使用Logtail插件处理日志时,您可以在创建或修改Logtail采集配置时,添加插件配置。具体操作,请参见处理插件概述。
processor_filter_regex
通过正则表达式匹配日志字段的值,从而实现日志过滤。
表单配置方式
- 参数说明 - 配置处理器类型为正则过滤日志(匹配日志字段的值),相关参数说明如下表所示。 说明- 日志字段的值完全匹配采集日志中的正则表达式,且不匹配丢弃日志中的正则表达式时,日志才会被采集,否则直接丢弃。 - 参数 - 说明 - 采集日志 - 输入日志字段名和该字段值匹配的正则表达式。如果原始日志中的目标字段值符合对应的正则表达式,则采集该日志。 - 支持添加多个键值对,键值对之间为与关系。 - 丢弃日志 - 输入日志字段和该字段值匹配的正则表达式。如果日志中任意一个字段的值符合对应的正则表达式,则丢弃该日志。 - 支持添加多个键值对,键值对之间为或关系。 
- 配置示例 - 只采集ip以10开头、method为POST且browser不为aliyun.*的日志,配置示例如下: - 原始日志 - 日志1 - "ip" : "10.**.**.**" "method" : "POST" "browser" : "aliyun-sdk-java"
- 日志2 - "ip" : "10.**.**.**" "method" : "POST" "browser" : "chrome"
- 日志3 - "ip" : "192.168.*.*" "method" : "POST" "browser" : "ali-sls-ilogtail"
 
- Logtail插件处理配置  
- 处理结果 - 日志 - 是否采集 - 原因 - 日志1 - 不采集 - browser字段的值匹配丢弃日志中的正则表达式。 - 日志2 - 采集 - 符合条件。 - 日志3 - 不采集 - ip字段的值不匹配采集日志中的正则表达式。 
 
JSON配置方式
- 参数说明 - 配置type为processor_filter_regex,detail说明如下表所示。 说明- 日志字段的值完全匹配Include中的正则表达式,且不匹配Exclude中的正则表达式时,日志才会被采集,否则直接丢弃。 - 参数 - 类型 - 是否必选 - 说明 - Include - JSON Object - 否 - Key为日志字段,Value为该字段值匹配的正则表达式。键值对之间为与关系。如果日志字段的值符合对应的正则表达式,则采集该日志。 - Exclude - JSON Object - 否 - Key为日志字段,Value为该字段值匹配的正则表达式。键值对之间为或关系。如果日志中任意一个字段的值符合对应的正则表达式,则丢弃该日志。 
- 配置示例 - 只采集ip以10开头、method为POST且browser不为aliyun.*的日志,配置示例如下: - 原始日志 - 日志1 - "ip" : "10.**.**.**" "method" : "POST" "browser" : "aliyun-sdk-java"
- 日志2 - "ip" : "10.**.**.**" "method" : "POST" "browser" : "chrome"
- 日志3 - "ip" : "192.168.*.*" "method" : "POST" "browser" : "ali-sls-ilogtail"
 
- Logtail插件处理配置 - { "type" : "processor_filter_regex", "detail" : { "Include" : { "ip" : "10\..*", "method" : "POST" }, "Exclude" : { "browser" : "aliyun.*" } } }
- 处理结果 - 日志 - 是否采集 - 原因 - 日志1 - 不采集 - browser字段的值匹配Exclude中的正则表达式。 - 日志2 - 采集 - 符合条件。 - 日志3 - 不采集 - ip字段的值不匹配Include中的正则表达式。 
 
processor_filter_key_regex
通过正则表达式匹配日志字段名称,从而实现日志过滤。
表单配置方式
- 参数说明 - 配置处理器类型为正则过滤日志(匹配日志字段名),相关参数说明如下表所示。 说明- 存在日志字段名称完全匹配采集日志中的正则表达式,且不匹配丢弃日志中的正则表达式时,日志才会被采集,否则直接丢弃。 - 参数 - 说明 - 采集日志 - 设置为日志字段的正则表达式,字段之间为与关系。如果日志字段符合对应的正则表达式,则采集该日志。 - 丢弃日志 - 设置为日志字段的正则表达式,字段之间为或关系。如果日志中任意一个字段符合对应的正则表达式,则丢弃该日志。 
- 配置示例 - 采集包含字段名是以request开头的日志,配置示例如下: - 原始日志 - 日志1 - "request_time" : 20 "request_length": 2314 "request_method" : "POST" "browser" : "aliyun-sdk-java"
- 日志2 - "request_time" : 70 "request_method" : "GET" "ip" : "192.168.**.**"
- 日志3 - "browser" : "ali-sls-ilogtail" "status" : 200
 
- Logtail插件处理配置  
- 处理结果 - 日志 - 是否采集 - 原因 - 日志1 - 采集 - request_time字段、request_length字段和request_method字段符合采集日志中的正则表达式。 - 日志2 - 采集 - request_time字段和request_length字段符合采集日志中的正则表达式。 - 日志3 - 不采集 - 日志中没有符合采集日志中的正则表达式的字段。 
 
JSON配置方式
- 参数说明 - 配置type为processor_filter_key_regex,detail说明如下表所示。 说明- 存在日志字段名称完全匹配Include中的正则表达式,且不匹配Exclude中的正则表达式时,日志才会被采集,否则直接丢弃。 - 参数 - 类型 - 是否必选 - 说明 - Include - string[] - 否 - 设置为日志字段的正则表达式,字段之间为与关系。如果日志字段符合对应的正则表达式,则采集该日志。 - Exclude - string[] - 否 - 设置为日志字段的正则表达式,字段之间为或关系。如果日志中任意一个字段符合对应的正则表达式,则丢弃该日志。 
- 配置示例 - 采集包含字段名是以request开头的日志,配置示例如下: - 原始日志 - 日志1 - "request_time" : 20 "request_length": 2314 "request_method" : "POST" "browser" : "aliyun-sdk-java"
- 日志2 - "request_time" : 70 "request_method" : "GET" "ip" : "192.168.**.**"
- 日志3 - "browser" : "ali-sls-ilogtail" "status" : 200
 
- Logtail插件处理配置 - { "type" : "processor_filter_key_regex", "detail" : { "Include" : [ "request.*" ] } }
- 处理结果 - 日志 - 是否采集 - 原因 - 日志1 - 采集 - request_time字段、request_length字段和request_method字段符合Include中的正则表达式。 - 日志2 - 采集 - request_time字段和request_length字段符合Include中的正则表达式。 - 日志3 - 不采集 - 日志中没有符合Include中的正则表达式的字段。 
 
相关文档
- 通过API接口配置Logtail流水线: 
- 通过控制台配置处理插件: