全部产品
Search
文档中心

日志服务:字段处理类插件

更新时间:Nov 13, 2025

字段处理类插件用于对字段进行增删改、打包、展开、提取等操作。

字段处理效果示例

表格展示该原始日志在分别使用提取字段插件的标定模式与不使用插件的情况下,保存到日志服务后的数据结构。使用提取插件能够结构化数据,为后续查询提供便利。

原始日志

不使用字段处理插件

使用提取字段插件标定模式

"time:2022.09.12 20:55:36\t json:{\"key1\" : \"xx\", \"key2\": false, \"key3\":123.456, \"key4\" : { \"inner1\" : 1, \"inner2\" : false}}"

Content:"time:2022.09.12 20:55:36\t json:{\"key1\" : \"xx\", \"key2\": false, \"key3\":123.456, \"key4\" : { \"inner1\" : 1, \"inner2\" : false}}"

使用标定模式提取字段值,设置字段名为timeval_key1val_key2val_key3value_key4_inner1value_key4_inner2

"time" : "2022.09.12 20:55:36" "val_key1" : "xx" "val_key2" : "false" "val_key3" : "123.456" "value_key4_inner1" : "1" "value_key4_inner2" : "false"

字段处理插件概览

日志服务提供以下多种类型的字段处理插件,请按需要进行选择。

插件名称

类型

功能说明

提取字段

拓展

支持如下模式:

  • 正则模式:使用正则匹配提取字段。

  • 标定模式:通过位置或标记提取字段。

  • CSV模式:按CSV格式提取字段。

  • 单字符分隔符模式:使用单字符分隔符提取字段。

  • 多字符分隔符模式:使用多字符分隔符提取字段。

  • 键值对模式:从键值对格式中提取字段。

  • Grok模式:使用Grok语法提取结构化字段。

添加字段

拓展

向日志中添加新字段。

丢弃字段

拓展

删除指定字段。

重命名字段

拓展

修改字段名称。

打包字段

拓展

将多个字段打包为一个JSON对象。

展开JSON字段

拓展

将JSON字符串字段展开为独立字段。

字段值映射

拓展

按映射表替换或转换字段值。

字符串替换

拓展

实现文本日志的全文替换、正则提取替换或去除转义符。

功能入口

当您需要使用Logtail插件处理日志时,您可以在创建或修改Logtail配置时,添加插件。具体操作,请参见处理插件概述

使用限制

  • 文本日志和容器标准输出只支持表单配置方式,其余输入源只支持JSON配置方式。

  • 使用正则模式提取,正则表达式有以下限制

    Go语言的正则表达式引擎基于RE2实现,相比PCRE引擎存在以下限制:

    • 命名分组语法差异

      Go使用(?P<name>...)语法,而非PCRE的(?<name>...)语法。

    • 不支持的正则模式

      • 断言(?=...)(?!...)(?<=...)(?<!...)

      • 条件表达式(?(condition)true|false)

      • 递归匹配(?R)(?0)

      • 子程序引用(?&name)(?P>name)

      • 原子组(?>...)

    建议使用Regex101等调试正则时,避免使用以上不支持的正则模式,否则插件将无法处理。

提取字段插件

支持通过正则模式、标定模式、CSV模式、单字符分隔符模式、多字符分隔符模式、键值对模式、Grok模式提取日志字段。

正则模式

通过正则表达式提取目标字段。

表单配置方式

  • 参数说明

    配置处理器类型提取字段(正则模式),相关参数说明如下表所示。

    参数

    说明

    原始字段

    原始字段名。

    正则表达式

    正则表达式。您需要使用半角圆括号()标注待提取的字段。

    结果字段

    为提取的内容指定字段名。支持添加多个字段名。

    原始字段缺失报错

    选中该选项后,如果原始日志中无您所指定的原始字段,系统将报错。

    正则不匹配报错

    选中该选项后,如果您所指定的正则表达式与原始字段的值不匹配,系统将报错。

    保留原始字段

    选中该选项后,解析后的日志中将保留原始字段。

    解析失败保留原始字段

    选中该选项后,如果解析日志失败,解析后的日志中将保留原始字段。

    正则完全匹配

    选中该选项后,您在结果字段中设置的所有字段通过指定的正则表达式都能与原始字段的值匹配,字段值才会被提取。

  • 配置示例

    使用正则模式提取content字段的值,并设置字段名为iptimemethodurlrequest_timerequest_lengthstatuslengthref_urlbrowser。配置示例如下:

    • 原始日志

      "content" : "10.200.**.** - - [10/Aug/2022:14:57:51 +0800] \"POST /PutData? Category=YunOsAccountOpLog&AccessKeyId=<yourAccessKeyId>&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=<yourSignature> HTTP/1.1\" 0.024 18204 200 37 \"-\" \"aliyun-sdk-java"
    • Logtail插件处理配置提取字段(正则模式)

    • 处理结果

      "ip" : "10.200.**.**" "time" : "10/Aug/2022:14:57:51" "method" : "POST" "url" : "/PutData?Category=YunOsAccountOpLog&AccessKeyId=<yourAccessKeyId>&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=<yourSignature>" "request_time" : "0.024" "request_length" : "18204" "status" : "200" "length" : "27" "ref_url" : "-" "browser" : "aliyun-sdk-java"

JSON配置方式

  • 参数说明

    配置typeprocessor_regexdetail说明如下表所示。

    参数

    类型

    是否必选

    说明

    SourceKey

    String

    原始字段名。

    Regex

    String

    正则表达式。您需要使用半角圆括号()标注待提取的字段。

    Keys

    String数组

    为提取的内容指定字段名,例如["ip", "time", "method"]。

    NoKeyError

    Boolean

    原始日志中无您所指定的原始字段时,系统是否报错。

    • true:报错。

    • false(默认值):不报错。

    NoMatchError

    Boolean

    您所指定的正则表达式与原始字段的值不匹配时,系统是否报错。

    • true(默认值):报错。

    • false:不报错。

    KeepSource

    Boolean

    解析后的日志中是否保留原始字段。

    • true:保留。

    • false(默认值):不保留。

    FullMatch

    Boolean

    是否完全匹配才被提取。

    • true(默认值):您在Keys参数中设置的所有字段通过Regex参数中的正则表达式都能与原始字段的值匹配,字段值才会被提取。

    • false:部分字段匹配也会进行提取。

    KeepSourceIfParseError

    Boolean

    解析日志失败时,解析后的日志中是否将保留原始字段。

    • true(默认值):保留。

    • false:不保留。

  • 配置示例

    使用正则模式提取content字段的值,并设置字段名为iptimemethodurlrequest_timerequest_lengthstatuslengthref_urlbrowser。配置示例如下:

    • 原始日志

      "content" : "10.200.**.** - - [10/Aug/2022:14:57:51 +0800] \"POST /PutData? Category=YunOsAccountOpLog&AccessKeyId=<yourAccessKeyId>&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=<yourSignature> HTTP/1.1\" 0.024 18204 200 37 \"-\" \"aliyun-sdk-java"
    • Logtail插件处理配置

      { "type" : "processor_regex", "detail" : {"SourceKey" : "content", "Regex" : "([\\d\\.]+) \\S+ \\S+ \\[(\\S+) \\S+\\] \"(\\w+) ([^\\\"]*)\" ([\\d\\.]+) (\\d+) (\\d+) (\\d+|-) \"([^\\\"]*)\" \"([^\\\"]*)\" (\\d+)", "Keys" : ["ip", "time", "method", "url", "request_time", "request_length", "status", "length", "ref_url", "browser"], "NoKeyError" : true, "NoMatchError" : true, "KeepSource" : false } }
    • 处理结果

      "ip" : "10.200.**.**" "time" : "10/Aug/2022:14:57:51" "method" : "POST" "url" : "/PutData?Category=YunOsAccountOpLog&AccessKeyId=<yourAccessKeyId>&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=<yourSignature>" "request_time" : "0.024" "request_length" : "18204" "status" : "200" "length" : "27" "ref_url" : "-" "browser" : "aliyun-sdk-java"

标定模式

通过标定起始和结束关键字进行字段提取。如果是JSON类型的字段,可以进行JSON展开。

表单配置方式

  • 参数说明

    配置处理器类型提取字段(标定模式),相关参数说明如下表所示。

    参数

    说明

    原始字段

    原始字段名。

    标定项列表

    标定项列表。

    起始关键字

    起始关键字。如果为空,表示匹配字符串开头。

    结束关键字

    结束关键字。如果为空,表示匹配字符串结尾。

    结果字段

    为提取的内容指定字段名。

    字段类型

    字段的类型,取值为string或json。

    JSON展开

    是否进行JSON展开。

    JSON展开连接符

    JSON展开的连接符,默认值为下划线(_)。

    JSON展开最大深度

    JSON展开最大深度。默认值为0,表示无限制。

    原始字段缺失报错

    选中该选项后,如果原始日志中无您所指定的原始字段,系统将报错。

    标定项缺失报错

    选中该选项后,如果原始日志中无匹配的标定项,系统将报错。

    保留原始字段

    选中该选项后,解析后的日志中将保留原始字段。

  • 配置示例

    使用标定模式提取content字段的值,并设置字段名为timeval_key1val_key2val_key3value_key4_inner1value_key4_inner2。配置示例如下:

    • 原始日志

      "content" : "time:2022.09.12 20:55:36\t json:{\"key1\" : \"xx\", \"key2\": false, \"key3\":123.456, \"key4\" : { \"inner1\" : 1, \"inner2\" : false}}"
    • Logtail插件处理配置 提取字段(标定模式)

    • 处理结果

      "time" : "2022.09.12 20:55:36" "val_key1" : "xx" "val_key2" : "false" "val_key3" : "123.456" "value_key4_inner1" : "1" "value_key4_inner2" : "false"

JSON配置方式

  • 参数说明

    配置typeprocessor_anchordetail说明如下表所示。

    参数

    类型

    是否必选

    说明

    SourceKey

    String

    原始字段名。

    Anchors

    Anchor数组

    标定项列表。

    Start

    String

    起始关键字。如果为空,表示匹配字符串开头。

    Stop

    String

    结束关键字。如果为空,表示匹配字符串结尾。

    FieldName

    String

    为提取的内容指定字段名。

    FieldType

    String

    字段的类型,取值为string或json。

    ExpondJson

    Boolean

    是否进行JSON展开。

    • true:展开。

    • false(默认值):不展开。

    仅当FieldTypejson时生效。

    ExpondConnecter

    String

    JSON展开的连接符。默认值为下划线(_)。

    MaxExpondDepth

    Int

    JSON展开最大深度。默认值为0,表示无限制。

    NoAnchorError

    Boolean

    查找不到标定项时,系统是否报错。

    • true:报错。

    • false(默认值):不报错。

    NoKeyError

    Boolean

    原始日志中无您所指定的原始字段时,系统是否报错。

    • true:报错。

    • false(默认值):不报错。

    KeepSource

    Boolean

    解析后的日志中是否保留原始字段。

    • true:保留。

    • false(默认值):不保留。

  • 配置示例

    使用标定模式提取content字段的值,并设置字段名为timeval_key1val_key2val_key3value_key4_inner1value_key4_inner2。配置示例如下:

    • 原始日志

      "content" : "time:2022.09.12 20:55:36\t json:{\"key1\" : \"xx\", \"key2\": false, \"key3\":123.456, \"key4\" : { \"inner1\" : 1, \"inner2\" : false}}"
    • Logtail插件处理配置

      { "type" : "processor_anchor", "detail" : {"SourceKey" : "content", "Anchors" : [ { "Start" : "time", "Stop" : "\t", "FieldName" : "time", "FieldType" : "string", "ExpondJson" : false }, { "Start" : "json:", "Stop" : "", "FieldName" : "val", "FieldType" : "json", "ExpondJson" : true } ] } }
    • 处理结果

      "time" : "2022.09.12 20:55:36" "val_key1" : "xx" "val_key2" : "false" "val_key3" : "123.456" "value_key4_inner1" : "1" "value_key4_inner2" : "false"

CSV模式

通过CSV模式解析CSV格式的日志。

表单配置方式

  • 参数说明

    配置处理器类型提取字段(CSV模式),相关参数说明如下表所示。

    参数

    说明

    原始字段

    原始字段名。

    结果字段

    为提取的内容指定字段名。支持添加多个字段名。

    重要

    待分割的字段数量小于结果字段中的字段数量时,结果字段中多余的字段将被忽略。

    分隔符

    分隔符,默认值为半角逗号(,)。

    保留超出部分

    选中该选项后,如果待分割的字段数量大于结果字段中的字段数量,系统将保留超出部分的内容。

    解析超出部分

    选中该选项后,系统将解析超出部分的内容,并且通过超出部分字段前缀指定超过部分字段的命名前缀。

    如果您选中保留超出部分,但未选中解析超出部分,则超出部分的内容将被存储于_decode_preserve_字段中。

    说明

    如果超出部分的内容中存在不规范内容时,您需要根据CSV格式对其进行规范化处理后,再进行存储操作。

    超出部分字段前缀

    超出部分的字段命名前缀。例如设置为expand_,则字段名为expand_1、expand_2。

    忽略字段前置空格

    选中该选项后,系统将忽略字段值中的前置空格。

    保留原始字段

    选中该选项后,解析的日志中将保留原始字段。

    原始字段缺失报错

    选中该选项后,如果日志中无您所指定的原始字段,系统将报错。

  • 配置示例

    提取csv字段的值,配置示例如下:

    • 原始日志

      { "csv": "2022-06-09,192.0.2.0,\"{\"\"key1\"\":\"\"value\"\",\"\"key2\"\":{\"\"key3\"\":\"\"string\"\"}}\"", ...... }
    • Logtail插件处理配置提取字段(CSV模式)

    • 处理结果

      { "date": "2022-06-09", "ip": "192.0.2.0", "content": "{\"key1\":\"value\",\"key2\":{\"key3\":\"string\"}}" ...... }

JSON配置方式

  • 参数说明

    配置typeprocessor_csvdetail说明如下表所示。

    参数

    类型

    是否必选

    说明

    SourceKey

    String

    原始字段名。

    SplitKeys

    String数组

    为提取的内容指定字段名,例如["date", "ip", "content"]。

    重要

    待分割的字段数量小于SplitKeys参数中的字段数量时,SplitKeys参数中多余的字段将被忽略。

    PreserveOthers

    Boolean

    待分割的字段数量大于SplitKeys参数中的字段数量时,是否保留超出部分。

    • true:保留。

    • false(默认值):不保留。

    ExpandOthers

    Boolean

    是否解析超出部分。

    • true:解析。

      您可以通过ExpandOthers参数解析超出部分,然后通过ExpandKeyPrefix参数指定超过部分字段的命名前缀。

    • false(默认值):不解析。

      如果您设置PreserveOthers为true且设置ExpandOthers为false,则超出部分的内容将被存储到_decode_preserve_字段中。

      说明

      如果多余的字段内容中存在不规范内容时,您需要根据CSV格式对其进行规范化处理后,再进行存储操作。

    ExpandKeyPrefix

    String

    超出部分的字段命名前缀。例如配置为expand_,则字段名为expand_1、expand_2。

    TrimLeadingSpace

    Boolean

    是否忽略字段值中的前置空格。

    • true:忽略。

    • false(默认值):不忽略。

    SplitSep

    String

    分隔符。默认值为半角逗号(,)。

    KeepSource

    Boolean

    解析后的日志中是否保留原始字段。

    • true:保留。

    • false(默认值):不保留。

    NoKeyError

    Boolean

    原始日志中无您指定的原始字段时,系统是否报错。

    • true:报错。

    • false(默认值):不报错。

  • 配置示例

    提取csv字段的值,配置示例如下:

    • 原始日志

      { "csv": "2022-06-09,192.0.2.0,\"{\"\"key1\"\":\"\"value\"\",\"\"key2\"\":{\"\"key3\"\":\"\"string\"\"}}\"", ...... }
    • Logtail插件处理配置

       { ...... "type":"processor_csv", "detail":{ "SourceKey":"csv", "SplitKeys":["date", "ip", "content"], } ...... }
    • 处理结果

      { "date": "2022-06-09", "ip": "192.0.2.0", "content": "{\"key1\":\"value\",\"key2\":{\"key3\":\"string\"}}" ...... }

单字符分隔符模式

说明

通过单字符的分隔符提取字段。该方式支持使用引用符对分隔符进行包裹。

表单配置方式

  • 参数说明

    配置处理器类型提取字段(单字符分隔符模式),相关参数说明如下表所示。

    参数

    说明

    原始字段

    原始字段名。

    分隔符

    分隔符。必须为单字符,可设置为不可见字符,例如\u0001

    结果字段

    为提取的内容指定字段名。

    使用引用符

    选中该选项后,您可以使用引用符。

    引用符

    引用符。必须为单字符,可以为不可见字符,例如\u0001

    原始字段缺失报错

    选中该选项后,如果原始日志中无您所指定的原始字段,系统将报错。

    分隔符不匹配报错

    选中该选项后,如果您所指定的分隔符与原始日志中的分隔符不匹配,系统将报错。

    保留原始字段

    选中该选项后,解析后的日志中将保留原始字段。

  • 示例

    使用竖线(|)分隔符提取content字段的值,并设置字段名为iptimemethodurlrequest_timerequest_lengthstatuslengthref_urlbrowser。配置示例如下:

    • 原始日志

      "content" : "10.**.**.**|10/Aug/2022:14:57:51 +0800|POST|PutData? Category=YunOsAccountOpLog&AccessKeyId=<yourAccessKeyId>&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=<yourSignature>|0.024|18204|200|37|-| aliyun-sdk-java"
    • Logtail处理插件配置 提取字段(单字符分隔符模式)

    • 处理结果

      "ip" : "10.**.**.**" "time" : "10/Aug/2022:14:57:51 +0800" "method" : "POST" "url" : "/PutData?Category=YunOsAccountOpLog&AccessKeyId=<yourAccessKeyId>&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=<yourSignature>" "request_time" : "0.024" "request_length" : "18204" "status" : "200" "length" : "27" "ref_url" : "-" "browser" : "aliyun-sdk-java"

JSON配置方式

  • 参数说明

    配置typeprocessor_split_chardetail说明如下表所示。

    参数

    类型

    是否必选

    说明

    SourceKey

    String

    原始字段名。

    SplitSep

    String

    分隔符。必须为单字符,可设置为不可见字符,例如\u0001

    SplitKeys

    String数组

    为提取的内容指定字段名,例如["ip", "time", "method"]。

    PreserveOthers

    Boolean

    待分割的字段数量大于SplitKeys参数中的字段数量时,是否保留超出部分。

    • true:保留。

    • false(默认值):不保留。

    QuoteFlag

    Boolean

    是否使用引用符。

    • true:使用。

    • false(默认值):不使用。

    Quote

    String

    引用符。必须为单字符,可以为不可见字符,例如\u0001

    仅当QuoteFlag配置为true时有效。

    NoKeyError

    Boolean

    原始日志中无您指定的原始字段时,系统是否报错。

    • true:报错。

    • false(默认值):不报错。

    NoMatchError

    Boolean

    您所指定的分隔符与日志中的分隔符不匹配时,系统是否报错。

    • true:报错。

    • false(默认值):不报错。

    KeepSource

    Boolean

    被解析后的日志中是否保留原始字段。

    • true:保留。

    • false(默认值):不保留。

  • 示例

    使用竖线(|)分隔符提取content字段的值,并设置字段名为iptimemethodurlrequest_timerequest_lengthstatuslengthref_urlbrowser。配置示例如下:

    • 原始日志

      "content" : "10.**.**.**|10/Aug/2022:14:57:51 +0800|POST|PutData? Category=YunOsAccountOpLog&AccessKeyId=<yourAccessKeyId>&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=<yourSignature>|0.024|18204|200|37|-| aliyun-sdk-java"
    • Logtail处理插件配置

      { "type" : "processor_split_char", "detail" : {"SourceKey" : "content", "SplitSep" : "|", "SplitKeys" : ["ip", "time", "method", "url", "request_time", "request_length", "status", "length", "ref_url", "browser"] } }
    • 处理结果

      "ip" : "10.**.**.**" "time" : "10/Aug/2022:14:57:51 +0800" "method" : "POST" "url" : "/PutData?Category=YunOsAccountOpLog&AccessKeyId=<yourAccessKeyId>&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=<yourSignature>" "request_time" : "0.024" "request_length" : "18204" "status" : "200" "length" : "27" "ref_url" : "-" "browser" : "aliyun-sdk-java"

多字符分隔符模式

说明

通过多字符的分隔符提取字段,不支持指定引用符对分隔符进行包裹。

表单配置方式

  • 参数说明

    配置处理器类型提取字段(多字符分隔符模式),相关参数说明如下表所示。

    参数

    说明

    原始字段

    原始字段名。

    分隔字符串

    分隔符。您可设置不可见字符,例如\u0001\u0002

    结果字段

    为提取的日志指定字段名。

    重要

    待分割的字段数量小于结果字段中的字段数量时,结果字段中多余的字段将被忽略。

    原始字段缺失报错

    选中该选项后,如果日志中无您指定的原始字段,系统将报错。

    分隔符不匹配报错

    选中该选项后,如果您所指定的分隔符与日志中的分隔符不匹配,系统将报错。

    保留原始字段

    选中该选项后,解析后的日志中将保留原始字段。

    保留超出部分

    选中该选项后,如果待分割的字段数量大于结果字段中的字段数量,系统将保留超出部分的内容。

    解析超出部分

    选中该选项后,如果待分割的字段数量大于结果字段中的字段数量,系统将解析超出部分的内容,并且您可以通过超出部分字段命名前缀指定超过部分字段的命名前缀。

    超出部分字段命名前缀

    超出部分的字段命名前缀。例如配置为expand_,则字段名为expand_1expand_2

  • 配置示例

    使用分隔符|#|提取content字段的值,并设置字段名为iptimemethodurlrequest_timerequest_lengthstatusexpand_1expand_2expand_3。配置示例如下:

    • 原始日志

      "content" : "10.**.**.**|#|10/Aug/2022:14:57:51 +0800|#|POST|#|PutData? Category=YunOsAccountOpLog&AccessKeyId=<yourAccessKeyId>&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=<yourSignature>|#|0.024|#|18204|#|200|#|27|#|-|#| aliyun-sdk-java"
    • Logtail插件处理配置 提取字段(多字符分隔符模式)

    • 处理结果

      "ip" : "10.**.**.**" "time" : "10/Aug/2022:14:57:51 +0800" "method" : "POST" "url" : "/PutData?Category=YunOsAccountOpLog&AccessKeyId=<yourAccessKeyId>&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=<yourSignature>" "request_time" : "0.024" "request_length" : "18204" "status" : "200" "expand_1" : "27" "expand_2" : "-" "expand_3" : "aliyun-sdk-java"

JSON配置方式

  • 参数说明

    配置typeprocessor_split_stringdetail说明如下表所示。

    参数

    类型

    是否必选

    说明

    SourceKey

    String

    原始字段名。

    SplitSep

    String

    分隔符。您可设置不可见字符,例如\u0001\u0002

    SplitKeys

    String数组

    为提取的日志内容指定字段名,例如["key1","key2"]。

    说明

    待分割的字段数量小于SplitKeys参数中的字段数量时,SplitKeys参数中多余的字段将被忽略。

    PreserveOthers

    Boolean

    待分割的字段数量大于SplitKeys参数中的字段数量时,是否保留超出部分。

    • true:保留。

    • false(默认值):不保留。

    ExpandOthers

    Boolean

    待分割的字段数量大于SplitKeys参数中的字段数量时,是否解析超出部分。

    • true:解析。

      您可以通过ExpandOthers参数解析超出部分,然后通过ExpandKeyPrefix参数指定超过部分字段的命名前缀。

    • false(默认值):不解析。

    ExpandKeyPrefix

    String

    超出部分的命名前缀。例如配置为expand_,则字段名为expand_1expand_2

    NoKeyError

    Boolean

    原始日志中无您所指定的原始字段时,系统是否报错。

    • true:报错。

    • false(默认值):不报错。

    NoMatchError

    Boolean

    您所指定的分隔符与日志中的分隔符不匹配时,系统是否报错。

    • true:报错。

    • false(默认值):不报错。

    KeepSource

    Boolean

    解析后的日志中是否保留原始字段。

    • true:保留。

    • false(默认值):不保留。

  • 配置示例

    使用分隔符|#|提取content字段的值,并设置字段名为iptimemethodurlrequest_timerequest_lengthstatusexpand_1expand_2expand_3。配置示例如下:

    • 原始日志

      "content" : "10.**.**.**|#|10/Aug/2022:14:57:51 +0800|#|POST|#|PutData? Category=YunOsAccountOpLog&AccessKeyId=<yourAccessKeyId>&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=<yourSignature>|#|0.024|#|18204|#|200|#|27|#|-|#| aliyun-sdk-java"
    • Logtail插件处理配置

      { "type" : "processor_split_string", "detail" : {"SourceKey" : "content", "SplitSep" : "|#|", "SplitKeys" : ["ip", "time", "method", "url", "request_time", "request_length", "status"], "PreserveOthers" : true, "ExpandOthers" : true, "ExpandKeyPrefix" : "expand_" } }
    • 处理结果

      "ip" : "10.**.**.**" "time" : "10/Aug/2022:14:57:51 +0800" "method" : "POST" "url" : "/PutData?Category=YunOsAccountOpLog&AccessKeyId=<yourAccessKeyId>&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=<yourSignature>" "request_time" : "0.024" "request_length" : "18204" "status" : "200" "expand_1" : "27" "expand_2" : "-" "expand_3" : "aliyun-sdk-java"

键值对模式

通过切分键值对的方式提取字段。

说明

Logtail 0.16.26及以上版本支持processor_split_key_value插件。

表单配置方式

  • 参数说明

    配置处理器类型提取字段(键值对模式),相关参数说明如下表所示。

    参数

    说明

    原始字段

    原始字段名。

    键值对分隔符

    键值对之间的分隔符,默认值为制表符\t

    键与值分隔符

    单个键值对中键与值之间的分隔符,默认值为半角冒号(:)。

    保留原始字段

    选中该选项后,系统将保留原始字段。

    原始字段缺失报错

    选中该选项后,如果日志中无您指定的原始字段,系统将报错。

    丢弃分隔符匹配失败键值对

    选中该选项后,如果您所指定分隔符与日志中的分隔符不匹配,系统将丢弃该键值对。

    键与值分隔符缺失报错

    选中该选项后,如果日志中无您指定的分隔符,系统将报错。

    键为空报错

    选中该选项后,如果分隔后的键为空,系统将报错。

    引用符

    如果值被引用符包裹,则将提取引用符内的值,支持设置多字符。

    重要

    当引用符内包含反斜线(\)与引用符连用时,该反斜线(\)将作为值的一部分输出。

  • 配置示例

    • 示例1:切换键值对。

      按照键值对方式分割content字段的值。其中,键值对间分隔符为制表符\t,键值对中的分隔符为半角冒号(:)。配置示例如下:

      • 原始日志

        "content": "class:main\tuserid:123456\tmethod:get\tmessage:\"wrong user\""
      • Logtail插件处理配置提取字段(键值对模式)

      • 处理结果

        "content": "class:main\tuserid:123456\tmethod:get\tmessage:\"wrong user\"" "class": "main" "userid": "123456" "method": "get" "message": "\"wrong user\""
    • 示例2:包含引用符的键值对切分。

      按照键值对方式分割content字段的值。其中,键值对间分隔符为制表符\t,键值对中的分隔符为半角冒号(:),引用符为双引号(")。配置示例如下:

      • 原始日志

        "content": "class:main http_user_agent:\"User Agent\" \"中文\" \"hello\\t\\\"ilogtail\\\"\\tworld\""
      • Logtail插件处理配置键值对

      • 处理结果

        "class": "main", "http_user_agent": "User Agent", "no_separator_key_0": "中文", "no_separator_key_1": "hello\t\"ilogtail\"\tworld",
    • 示例3:包含多字符引用符的键值对切分。

      按照键值对方式分割content字段的值。其中,键值对间分隔符为制表符\t,键值对中的分隔符为半角冒号(:),引用符为双引号("")。配置示例如下:

      • 原始日志

        "content": "class:main http_user_agent:\"\"\"User Agent\"\"\" \"\"\"中文\"\"\""
      • Logtail插件处理配置键值对模式

      • 处理结果

        "class": "main", "http_user_agent": "User Agent", "no_separator_key_0": "中文",

JSON配置方式

  • 参数说明

    配置typeprocessor_split_key_valuedetail说明如下表所示。

    参数

    类型

    是否必选

    说明

    SourceKey

    string

    原始字段名。

    Delimiter

    string

    键值对之间的分隔符,默认值为制表符\t

    Separator

    string

    单个键值对中键与值之间的分隔符,默认值为半角冒号(:)。

    KeepSource

    Boolean

    解析后的日志中是否保留原始字段。

    • true:保留。

    • false(默认值):不保留。

    ErrIfSourceKeyNotFound

    Boolean

    原始日志中无您所指定的原始字段时,系统是否报错。

    • true(默认值):报错。

    • false:不报错。

    DiscardWhenSeparatorNotFound

    Boolean

    无匹配的分隔符时是否丢弃该键值对。

    • true:丢弃。

    • false(默认值):不丢弃。

    ErrIfSeparatorNotFound

    Boolean

    当指定的分隔符不存在时,系统是否报错。

    • true(默认值):报错。

    • false:不报错。

    ErrIfKeyIsEmpty

    Boolean

    当分隔后的键为空时,系统是否报错。

    • true(默认值):报错。

    • false:不报错。

    Quote

    String

    引用符,当设定后若值被引用符包含,就提取引用符内的值,支持多字符。默认不开启引用符功能。

    重要
    • 如果引用符为双引号(""),需要添加转义符,即添加反斜线(\)。

    • 当引用符内包含反斜线(\)与引用符连用时,该反斜线(\)将作为值的一部分输出。

  • 配置示例

    • 示例1:切分键值对。

      按照键值对方式分割content字段的值。其中,键值对间分隔符为制表符\t,键值对中的分隔符为半角冒号(:)。配置示例如下:

      • 原始日志

        "content": "class:main\tuserid:123456\tmethod:get\tmessage:\"wrong user\""
      • Logtail插件处理配置

        { "processors":[ { "type":"processor_split_key_value", "detail": { "SourceKey": "content", "Delimiter": "\t", "Separator": ":", "KeepSource": true } } ] }
      • 处理结果

        "content": "class:main\tuserid:123456\tmethod:get\tmessage:\"wrong user\"" "class": "main" "userid": "123456" "method": "get" "message": "\"wrong user\""
    • 示例2:切分键值对。

      按照键值对方式分割content字段的值。其中,键值对间分隔符为制表符\t,键值对中的分隔符为半角冒号(:),引用符为双引号(")。配置示例如下:

      • 原始日志

        "content": "class:main http_user_agent:\"User Agent\" \"中文\" \"hello\\t\\\"ilogtail\\\"\\tworld\""
      • Logtail插件处理配置

        { "processors":[ { "type":"processor_split_key_value", "detail": { "SourceKey": "content", "Delimiter": " ", "Separator": ":", "Quote": "\"" } } ] }
      • 处理结果

        "class": "main", "http_user_agent": "User Agent", "no_separator_key_0": "中文", "no_separator_key_1": "hello\t\"ilogtail\"\tworld",
    • 示例3:切分键值对。

      按照键值对方式分割content字段的值。其中,键值对间分隔符为制表符\t,键值对中的分隔符为半角冒号(:),引用符为双引号(""")。配置示例如下:

      • 原始日志

        "content": "class:main http_user_agent:\"\"\"User Agent\"\"\" \"\"\"中文\"\"\""
      • Logtail插件处理配置

        { "processors":[ { "type":"processor_split_key_value", "detail": { "SourceKey": "content", "Delimiter": " ", "Separator": ":", "Quote": "\"\"\"" } } ] }
      • 处理结果

        "class": "main", "http_user_agent": "User Agent", "no_separator_key_0": "中文",

Grok模式

通过Grok表达式提取目标字段。

说明

Logtail 1.2.0及以上版本支持processor_grok插件。

表单配置方式

  • 参数说明

    配置处理器类型提取字段(GROK模式),相关参数说明如下表所示。

    参数

    说明

    原始字段

    原始字段名。

    匹配目标

    Grok表达式数组。processor_grok插件会根据此处配置的表达式列表从上至下依次对日志进行匹配,并返回第一条匹配成功的提取结果。

    默认支持的表达式,请参见processor_grok。如果链接中无您需要的表达式,请在自定义Grok模式中输入自定义的Grok表达式。

    说明

    配置多条Grok表达式,可能影响性能。建议不超过5条。

    自定义Grok模式

    输入自定义的规则名和Grok表达式。

    自定义Grok模式文件目录

    自定义的Grok模式文件所在的目录。processor_grok插件会读取目录内的所有文件。

    重要

    更新自定义的Grok模式文件后,需重启Logtail才能生效。

    最长匹配时间

    通过Grok表达式提取字段的最大尝试时间,单位:毫秒。设置为0或者留空时,表示不会超时。

    保留解析失败日志

    选中该选项后,如果解析失败,系统将保留该日志。

    保留原始字段

    选中该选项后,解析后的日志中将保留原始字段。

    原始字段缺失报错

    选中该选项后,如果原始日志中无您所指定的原始字段,系统将报错。

    匹配目标全不匹配报错

    选中该选项后,如果匹配目标中设置的表达式全部与日志不匹配,系统将报错。

    匹配超时报错

    选中该选项后,如果匹配超时,系统将报错。

  • 配置示例

    使用Grok模式提取content字段的值,并为提取的内容指定字段名为yearmonthday。配置示例如下:

    • 原始日志

      "content" : "2022 October 17"
    • Logtail插件处理配置GROK模式

    • 处理结果

      "year":"2022" "month":"October" "day":"17"

JSON配置方式

  • 参数说明

    配置typeprocessor_grokdetail说明如下表所示。

    参数

    类型

    是否必选

    说明

    CustomPatternDir

    String数组

    自定义的Grok模式文件所在的目录。processor_grok插件会读取目录内的所有文件。

    未添加该参数时,表示不导入自定义的Grok模式文件。

    重要

    更新自定义的Grok模式文件后,需重启Logtail才能生效。

    CustomPatterns

    Map

    自定义的GROK模式,key为规则名,value为Grok表达式。

    默认支持的表达式,请参见processor_grok。如果链接中无您需要的表达式,请在Match中输入自定义的Grok表达式。

    未添加该参数时,表示不使用自定义的GROK模式。

    SourceKey

    String

    原始字段名。默认值为content字段。

    Match

    String数组

    Grok表达式数组。processor_grok插件会根据此处配置的表达式列表从上至下依次对日志进行匹配,并返回第一条匹配成功的提取结果。

    说明

    配置多条Grok表达式,可能影响性能。建议不超过5条。

    TimeoutMilliSeconds

    Long

    通过Grok表达式提取字段的最大尝试时间,单位:毫秒。

    未添加该参数或设置为0时,表示不会超时。

    IgnoreParseFailure

    Boolean

    是否忽略解析失败的日志。

    • true(默认值):忽略。

    • false:删除。

    KeepSource

    Boolean

    是否在解析成功后保留原始字段。

    • true(默认值):保留。

    • false:丢弃。

    NoKeyError

    Boolean

    原始日志中无您所指定的原始字段时,系统是否报错。

    • true:报错。

    • false(默认值):不报错。

    NoMatchError

    Boolean

    Match参数中设置的表达式全部与日志不匹配时,系统是否报错。

    • true(默认值):报错。

    • false:不报错。

    TimeoutError

    Boolean

    匹配超时,系统是否报错。

    • true(默认值):报错。

    • false:不报错。

  • 示例一

    使用Grok模式提取content字段的值,并为提取的内容指定字段名为yearmonthday。配置示例如下:

    • 原始日志

      "content" : "2022 October 17"
    • Logtail插件处理配置

      { "type" : "processor_grok", "detail" : { "KeepSource" : false, "Match" : [ "%{YEAR:year} %{MONTH:month} %{MONTHDAY:day}" ], "IgnoreParseFailure" : false } }
    • 处理结果

      "year":"2022" "month":"October" "day":"17"
  • 示例二

    使用Grok模式提取多条日志中content字段的值,并根据不同的Grok表达式解析为不同结果。配置示例如下:

    • 原始日志

      { "content" : "begin 123.456 end" } { "content" : "2019 June 24 \"I am iron man"\" } { "content" : "WRONG LOG" } { "content" : "10.0.0.0 GET /index.html 15824 0.043" }
    • Logtail插件处理配置

      { "type" : "processor_grok", "detail" : { "CustomPatterns" : { "HTTP" : "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" }, "IgnoreParseFailure" : false, "KeepSource" : false, "Match" : [ "%{HTTP}", "%{WORD:word1} %{NUMBER:request_time} %{WORD:word2}", "%{YEAR:year} %{MONTH:month} %{MONTHDAY:day} %{QUOTEDSTRING:motto}" ], "SourceKey" : "content" }, }
    • 处理结果

      • 针对第一条日志,processor_grok插件使用Match参数中的第一个表达式%{HTTP}匹配失败,使用第二个表达式%{WORD:word1} %{NUMBER:request_time} %{WORD:word2}匹配成功,因此根据第二个表达式返回提取结果。

        由于设置KeepSource参数为false,因此原日志中的content字段被丢弃。

      • 针对第二条日志,processor_grok插件使用Match参数中的第一个表达式%{HTTP}和第二个表达式%{WORD:word1} %{NUMBER:request_time} %{WORD:word2}匹配失败,使用第三个表达式%{YEAR:year} %{MONTH:month} %{MONTHDAY:day} %{QUOTEDSTRING:motto}匹配成功,因此根据第三个表达式返回提取结果。

      • 针对第三条日志,processor_grok插件使用Match参数中的三个表达式均匹配失败,且您设置了IgnoreParseFailure参数为false,因此第三条日志被丢弃。

      • 针对第四条日志,processor_grok插件使用Match参数中的第一个表达式%{HTTP}匹配日志成功,因此根据第一个表达式返回提取结果。

      { "word1":"begin", "request_time":"123.456", "word2":"end", } { "year":"2019", "month":"June", "day":"24", "motto":"\"I am iron man"\", } { "client":"10.0.0.0", "method":"GET", "request":"/index.html", "bytes":"15824", "duration":"0.043", }

添加字段插件

使用processor_add_fields插件添加日志字段。此处介绍processor_add_fields插件的参数说明和配置示例。

配置说明

重要

Logtail 0.16.28及以上版本支持processor_add_fields插件。

表单配置方式

  • 参数说明

    配置处理器类型添加字段,相关参数说明如下表所示。

    参数

    说明

    添加字段

    待添加的字段名和字段值,支持添加多个。

    忽略重复字段

    存在相同的字段名时,是否忽略重复的字段。

  • 配置示例

    添加aaa2字段和aaa3字段,配置示例如下:

    • 原始日志

      "aaa1":"value1"
    • Logtail插件处理配置 添加字段

    • 处理结果

      "aaa1":"value1" "aaa2":"value2" "aaa3":"value3"

JSON配置方式

  • 参数说明

    配置typeprocessor_add_fieldsdetail说明如下表所示。

    参数

    类型

    是否必选

    说明

    Fields

    Map

    待添加的字段名和字段值。键值对格式,支持添加多个。

    IgnoreIfExist

    Boolean

    存在相同的字段名时,是否忽略重复的字段。

    • true:忽略。

    • false(默认值):不忽略。

  • 配置示例

    添加aaa2字段和aaa3字段,配置示例如下:

    • 原始日志

      "aaa1":"value1"
    • Logtail插件处理配置

      { "processors":[ { "type":"processor_add_fields", "detail": { "Fields": { "aaa2": "value2", "aaa3": "value3" } } } ] }
    • 处理结果

      "aaa1":"value1" "aaa2":"value2" "aaa3":"value3"

丢弃字段插件

使用processor_drop插件丢弃日志字段。此处介绍processor_drop插件的参数说明和配置示例。

配置说明

重要

Logtail 0.16.28及以上版本支持processor_drop插件。

表单配置方式

  • 参数说明

    配置处理器类型丢弃字段,相关参数说明如下表所示。

    参数

    说明

    丢弃字段

    指定待丢弃的字段,支持配置多个。

  • 配置示例

    丢弃日志中的aaa1字段和aaa2字段,配置示例如下:

    • 原始日志

      "aaa1":"value1" "aaa2":"value2" "aaa3":"value3"
    • Logtail插件处理配置 丢弃字段

    • 处理结果

      "aaa3":"value3"

JSON配置方式

  • 参数说明

    配置typeprocessor_dropdetail说明如下表所示。

    参数

    类型

    是否必选

    说明

    DropKeys

    String数组

    指定待丢弃的字段,支持配置多个。

  • 配置示例

    丢弃日志中的aaa1字段和aaa2字段,配置示例如下:

    • 原始日志

      "aaa1":"value1" "aaa2":"value2" "aaa3":"value3"
    • Logtail插件处理配置

      { "processors":[ { "type":"processor_drop", "detail": { "DropKeys": ["aaa1","aaa2"] } } ] }
    • 处理结果

      "aaa3":"value3"

重命名字段插件

使用processor_rename插件重命名字段。此处介绍processor_rename插件的参数说明和配置示例。

配置说明

重要

Logtail 0.16.28及以上版本支持processor_rename插件。

表单配置方式

  • 参数配置

    配置处理插件类型重命名字段,相关参数说明如下表所示。

    参数

    说明

    原始字段

    待重命名的原始字段。

    结果字段

    重命名后的字段。

    原始字段缺失报错

    选中该选项后,如果日志中无您所指定的原始字段,系统将报错。

  • 配置示例

    aaa1字段重命名为bbb1,将aaa2字段重命名bbb2,配置示例如下:

    • 原始日志

      "aaa1":"value1" "aaa2":"value2" "aaa3":"value3"
    • Logtail插件处理配置 重命名字段

    • 处理结果

      "bbb1":"value1" "bbb2":"value2" "aaa3":"value3"

JSON配置方式

  • 参数配置

    配置typeprocessor_renamedetail说明如下表所示。

    参数

    类型

    是否必选

    说明

    NoKeyError

    Boolean

    日志中无您所指定的原始字段时,系统是否报错。

    • true:报错。

    • false(默认值):不报错。

    SourceKeys

    String数组

    待重命名的原始字段。

    DestKeys

    String数组

    重命名后的字段。

  • 配置示例

    aaa1字段重命名为bbb1,将aaa2字段重命名bbb2,配置示例如下:

    • 原始日志

      "aaa1":"value1" "aaa2":"value2" "aaa3":"value3"
    • Logtail插件处理配置

      { "processors":[ { "type":"processor_rename", "detail": { "SourceKeys": ["aaa1","aaa2"], "DestKeys": ["bbb1","bbb2"], "NoKeyError": true } } ] }
    • 处理结果

      "bbb1":"value1" "bbb2":"value2" "aaa3":"value3"

打包字段插件

使用processor_packjson插件将一个或多个字段打包为JSON Object格式的字段。此处介绍processor_packjson插件的参数说明和配置示例。

配置说明

重要

Logtail 0.16.28及以上版本支持processor_packjson插件。

表单配置方式

  • 参数说明

    配置处理器类型打包字段,相关参数说明如下表所示。

    参数

    说明

    原始字段

    待打包的原始字段。

    结果字段

    打包后的字段。

    保留原始字段

    选中该选项后,解析后的日志中将保留原始字段。

    原始字段缺失报错

    选中该选项后,如果原始日志中无您指定的原始字段,系统将报错。

  • 配置示例

    将指定的a字段和b字段打包成JSON字段d_key,配置示例如下:

    • 原始日志

      "a":"1" "b":"2"
    • Logtail插件处理配置 打包字段

    • 处理结果

      "a":"1" "b":"2" "d_key":"{\"a\":\"1\",\"b\":\"2\"}"

JSON配置方式

  • 参数说明

    配置typeprocessor_packjsondetail说明如下表所示。

    参数

    类型

    是否必选

    说明

    SourceKeys

    String数组

    待打包的原始字段。

    DestKey

    String

    打包后的字段。

    KeepSource

    Boolean

    解析后的日志中是否保留原始字段。

    • true(默认值):保留。

    • false:不保留。

    AlarmIfIncomplete

    Boolean

    原始日志中无您所指定的原始字段时,系统是否报错。

    • true(默认值):报错。

    • false:不报错。

  • 配置示例

    将指定的a字段和b字段打包成JSON字段d_key,配置示例如下:

    • 原始日志

      "a":"1" "b":"2"
    • Logtail插件处理配置

      { "processors":[ { "type":"processor_packjson", "detail": { "SourceKeys": ["a","b"], "DestKey":"d_key", "KeepSource":true, "AlarmIfEmpty":true } } ] }
    • 处理结果

      "a":"1" "b":"2" "d_key":"{\"a\":\"1\",\"b\":\"2\"}"

展开JSON字段插件

使用processor_json插件展开JSON字段。此处介绍processor_json插件的参数说明和配置示例。

配置说明

重要

Logtail 0.16.28及以上版本支持processor_json插件。

表单配置方式

  • 参数说明

    配置处理器类型展开JSON字段,相关参数说明如下表所示。

    参数

    说明

    原始字段

    待展开的原始字段名。

    JSON展开深度

    JSON展开的深度。默认值为0,表示不限制。1表示当前层级,以此类推。

    JSON展开连接符

    JSON展开时的连接符,默认值为下划线(_)。

    JSON展开字段前缀

    JSON展开时,对字段名附加的前缀。

    展开数组

    是否展开数组类型。Logtail 1.8.0及以上版本支持该参数。

    保留原始字段

    选中该选项后,被解析后的日志中将保留原始字段。

    原始字段缺失报错

    选中该选项后,如果原始日志中无您所指定的原始字段,系统将报错。

    将原始字段名作为展开字段名前缀

    选中该选项后,系统会将原始字段名作为所有JSON展开字段名的前缀。

    解析失败保留原始日志

    选中该选项后,如果解析日志失败,系统将保留原始日志。

  • 配置示例

    s_key字段进行JSON展开,并使用j作为前缀,和原始字段名s_key作为JSON展开后字段名。配置示例如下:

    • 原始日志(Logtail读取的文件路径)

      {"s_key":"{\"k1\":{\"k2\":{\"k3\":{\"k4\":{\"k51\":\"51\",\"k52\":\"52\"},\"k41\":\"41\"}}}}"}
    • Logtail插件处理配置

      image

    • 处理结果

      image

JSON配置方式

  • 参数说明

    配置typeprocessor_jsondetail说明如下表所示。

    参数

    类型

    是否必选

    说明

    SourceKey

    String

    待展开的原始字段名。

    NoKeyError

    Boolean

    原始日志中无您所指定的原始字段时,系统是否报错。

    • true(默认值):报错。

    • false:不报错。

    ExpandDepth

    Int

    JSON展开的深度。默认值为0,表示不限制。1表示当前层级,以此类推。

    ExpandConnector

    String

    JSON展开时的连接符,默认值为下划线(_)。

    Prefix

    String

    JSON展开时,对字段名附加的前缀。

    KeepSource

    Boolean

    被解析后的日志中是否保留原始字段。

    • true(默认值):保留。

    • false:不保留。

    UseSourceKeyAsPrefix

    Boolean

    是否将原始字段名作为所有JSON展开字段名的前缀。

    KeepSourceIfParseError

    Boolean

    解析日志失败时,是否保留原始日志。

    • true(默认值):保留。

    • false:不保留。

    ExpandArray

    Boolean

    是否展开数组类型。Logtail 1.8.0及以上版本支持该参数。

    • false(默认值):不展开。

    • true:展开。例如{"k":["1","2"]}展开为{"k[0]":"1","k[1]":"2"}

  • 配置示例

    s_key字段进行JSON展开,并使用j作为前缀,和原始字段名s_key作为JSON展开后字段名。配置示例如下:

    • 原始日志(Logtail读取的文件路径)

      {"s_key":"{\"k1\":{\"k2\":{\"k3\":{\"k4\":{\"k51\":\"51\",\"k52\":\"52\"},\"k41\":\"41\"}}}}"}
    • Logtail插件处理配置

      { "processors":[ { "type":"processor_json", "detail": { "SourceKey": "content", "NoKeyError":true, "ExpandDepth":0, "ExpandConnector":"-", "Prefix":"j", "KeepSource": false, "UseSourceKeyAsPrefix": true } } ] }
    • 处理结果

      image

字段值映射插件

使用processor_dict_map插件进行字段值映射。此处介绍processor_dict_map插件的参数说明和配置示例。

配置说明

表单配置方式

配置处理器类型字段值映射处理,相关参数说明如下表所示。

参数

说明

原始字段

原始字段名。

结果字段

映射后的结果字段名。

映射字典

映射字典。设置键和值,将键映射到值上。

映射字典较小时,可直接通过此参数完成设置。不需要提供本地的CSV字典文件。

重要

当您设置了本地字典后,映射字典配置不生效。

本地字典

CSV格式的字典文件。该CSV文件的分隔符为半角逗号(,),字段引用表示为半角引号(")。

高级参数>处理原始字段缺失

选中该选项后,当原始日志中缺失目标字段时,将处理缺失字段,即按照结果字段填充值中的值进行填充。

高级参数>映射字典最大大小

映射字典的最大大小。默认值为1000,即最多可存储1000条映射规则。

如果要限制插件对服务器内存的占用,可调小该值。

高级参数>原日志处理方法

当映射后的字段在原始日志中已存在时的处理方式。

  • 覆写原字段。

  • 不覆写原字段。

JSON配置方式

配置typeprocessor_dict_mapdetail说明如下表所示。

参数

类型

是否必选

说明

SourceKey

String

原始字段名。

MapDict

Map

映射字典。

映射字典较小时,可直接通过此参数完成设置。不需要提供本地的CSV字典文件。

重要

当您设置了DictFilePath参数后,MapDict参数中的配置不生效。

DictFilePath

String

CSV格式的字典文件。该CSV文件的分隔符为半角逗号(,),字段引用表示为半角引号(")。

DestKey

String

映射后的字段名。

HandleMissing

Boolean

当原始日志中缺失目标字段时,系统是否处理。

  • true:处理。

    系统将按照Missing参数中的值进行填充。

  • false(默认值):不处理。

Missing

String

处理原始日志中缺失的目标字段时,设置对应的填充值。默认值为Unknown

当配置HandleMissing为true时,该参数配置生效。

MaxDictSize

Int

映射字典的最大大小。默认值为1000,即最多可存储1000条映射规则。

如果要限制插件对服务器内存的占用,可调小该值。

Mode

String

当映射后的字段在原始日志中已存在时的处理方式。

  • overwrite(默认值):覆写原字段。

  • fill:不覆写原字段。

字符串替换

使用processor_string_replace插件,实现文本日志的全文替换、正则提取替换或去除转义符。

配置说明

重要

Logtail 1.6.0及以上版本支持processor_string_replace插件。

表单配置方式

配置处理器类型字符串替换,相关参数说明如下表所示。

参数

说明

原始字段

原始字段名。

匹配方式

指定匹配方式。可选值:

  • 字符串匹配:通过字符串替换目标内容。

  • 正则匹配:通过正则表达式替换目标内容。

  • 去除转义符:去除转义符。

匹配内容

输入匹配的内容。

  • 设置匹配方式字符串匹配时,输入与待替换内容匹配的字符串。

    当多个字符串都匹配时,全部替换。

  • 设置匹配方式正则表达式匹配时,输入与待替换内容匹配的正则表达式。

    当多个字符串都匹配时,全部替换。您也可以用正则分组方式匹配指定的分组。

  • 设置匹配方式去除转义符时,无需配置该参数。

替换内容

用于替换的字符串。

  • 设置匹配方式字符串匹配时,输入用于替换原内容的字符串。

  • 设置匹配方式正则表达式匹配时,输入用于替换原内容的字符串,支持根据正则分组进行替换。

  • 设置匹配方式去除转义符时,无需配置该参数。

结果字段

为替换后的内容指定新字段。

JSON配置方式

配置typeprocessor_string_replacedetail说明如下表所示。

参数

类型

是否必选

说明

SourceKey

String

原始字段名。

Method

String

指定匹配方式。可选值:

  • const:使用字符串替换。

  • regex:使用正则表达式替换。

  • unquote:去除转义符。

Match

String

输入匹配内容。

  • 设置Methodconst时,输入与待替换内容匹配的字符串。

    当多个字符串都匹配时,全部替换。

  • 设置Methodregex时,输入与待替换内容匹配的正则表达式。

    当多个字符串都匹配时,全部替换。您也可以用正则分组方式匹配指定的分组。

  • 设置Methodunquote时,无需配置此参数。

ReplaceString

String

用于替换的字符串,默认值为""。

  • 设置Methodconst时,输入用于替换原内容的字符串。

  • 设置Methodregex时,输入用于替换原内容的字符串,支持根据正则分组进行替换。

  • 设置Methodunquote时,无需配置此参数。

DestKey

String

为替换后的内容指定新字段,默认不新增字段。

配置示例

通过字符串匹配方式进行替换

通过字符串匹配方式进行替换,将content字段值中的Error:替换为空字符串。

表单配置方式

  • 原始日志如下:

    "content": "2023-05-20 10:01:23 Error: Unable to connect to database."
  • Logtail插件处理配置:image..png

  • 处理结果:

    "content": "2023-05-20 10:01:23 Unable to connect to database."

JSON配置方式

  • 原始日志:

    "content": "2023-05-20 10:01:23 Error: Unable to connect to database."
  • Logtail插件处理配置:

    { "processors":[ { "type":"processor_string_replace", "detail": { "SourceKey": "content", "Method": "const", "Match": "Error: ", "ReplaceString": "" } } ] }
  • 处理结果:

    "content": "2023-05-20 10:01:23 Unable to connect to database.",

通过正则表达式方式进行替换

通过正则表达式方式进行替换,将content字段值中与正则表达式\\u\w+\[\d{1,3};*\d{1,3}m|N/A匹配的字符串替换为空字符串。

表单配置方式

  • 原始日志:

    "content": "2022-09-16 09:03:31.013 \u001b[32mINFO \u001b[0;39m \u001b[34m[TID: N/A]\u001b[0;39m [\u001b[35mThread-30\u001b[0;39m] \u001b[36mc.s.govern.polygonsync.job.BlockTask\u001b[0;39m : 区块采集------结束------\r"
  • Logtail插件处理配置:image..png

  • 处理结果:

    "content": "2022-09-16 09:03:31.013 INFO [TID: ] [Thread-30] c.s.govern.polygonsync.job.BlockTask : 区块采集------结束------\r",

JSON配置方式

  • 原始日志:

    "content": "2022-09-16 09:03:31.013 \u001b[32mINFO \u001b[0;39m \u001b[34m[TID: N/A]\u001b[0;39m [\u001b[35mThread-30\u001b[0;39m] \u001b[36mc.s.govern.polygonsync.job.BlockTask\u001b[0;39m : 区块采集------结束------\r"
  • Logtail插件处理配置:

    { "processors":[ { "type":"processor_string_replace", "detail": { "SourceKey": "content", "Method": "regex", "Match": "\\\\u\\w+\\[\\d{1,3};*\\d{1,3}m|N/A", "ReplaceString": "" } } ] }
  • 处理结果:

    "content": "2022-09-16 09:03:31.013 INFO [TID: ] [Thread-30] c.s.govern.polygonsync.job.BlockTask : 区块采集------结束------\r",

通过正则分组方式进行替换

通过正则分组方式进行替换,将content字段值中的16替换为*/24,并输出到新字段new_ip中。

重要

正则分组替换时,替换内容中不能存在{},只能使用$1$2 等形式。

表单配置方式

  • 原始日志:

    "content": "10.10.239.16"
  • Logtail插件处理配置:image..png

  • 处理结果:

    "content": "10.10.239.16", "new_ip": "10.10.239.*/24",

JSON配置方式

  • 原始日志:

    "content": "10.10.239.16"
  • Logtail插件处理配置:

    { "processors":[ { "type":"processor_string_replace", "detail": { "SourceKey": "content", "Method": "regex", "Match": "(\\d.*\\.)\\d+", "ReplaceString": "$1*/24", "DestKey": "new_ip" } } ] }
  • 处理结果:

    "content": "10.10.239.16", "new_ip": "10.10.239.*/24",

删除转义字符

表单配置方式

  • 原始日志:

    "content": "{\\x22UNAME\\x22:\\x22\\x22,\\x22GID\\x22:\\x22\\x22,\\x22PAID\\x22:\\x22\\x22,\\x22UUID\\x22:\\x22\\x22,\\x22STARTTIME\\x22:\\x22\\x22,\\x22ENDTIME\\x22:\\x22\\x22,\\x22UID\\x22:\\x222154212790\\x22,\\x22page_num\\x22:1,\\x22page_size\\x22:10}"
  • Logtail插件处理配置:image..png

  • 处理结果:

    "content": "{\"UNAME\":\"\",\"GID\":\"\",\"PAID\":\"\",\"UUID\":\"\",\"STARTTIME\":\"\",\"ENDTIME\":\"\",\"UID\":\"2154212790\",\"page_num\":1,\"page_size\":10}",

JSON配置方式

  • 原始日志:

    "content": "{\\x22UNAME\\x22:\\x22\\x22,\\x22GID\\x22:\\x22\\x22,\\x22PAID\\x22:\\x22\\x22,\\x22UUID\\x22:\\x22\\x22,\\x22STARTTIME\\x22:\\x22\\x22,\\x22ENDTIME\\x22:\\x22\\x22,\\x22UID\\x22:\\x222154212790\\x22,\\x22page_num\\x22:1,\\x22page_size\\x22:10}"
  • Logtail插件处理配置:

    { "processors":[ { "type":"processor_string_replace", "detail": { "SourceKey": "content", "Method": "unquote" } } ] }
  • 处理结果:

    "content": "{\"UNAME\":\"\",\"GID\":\"\",\"PAID\":\"\",\"UUID\":\"\",\"STARTTIME\":\"\",\"ENDTIME\":\"\",\"UID\":\"2154212790\",\"page_num\":1,\"page_size\":10}",

相关文档