字段处理类插件用于对字段进行增删改、打包、展开、提取等操作。
字段处理效果示例
表格展示该原始日志在分别使用提取字段插件的标定模式与不使用插件的情况下,保存到日志服务后的数据结构。使用提取插件能够结构化数据,为后续查询提供便利。
原始日志 | 不使用字段处理插件 | 使用提取字段插件标定模式 |
| Content:"time:2022.09.12 20:55:36\t json:{\"key1\" : \"xx\", \"key2\": false, \"key3\":123.456, \"key4\" : { \"inner1\" : 1, \"inner2\" : false}}" | 使用标定模式提取字段值,设置字段名为time、val_key1、val_key2、val_key3、value_key4_inner1、value_key4_inner2。 |
字段处理插件概览
日志服务提供以下多种类型的字段处理插件,请按需要进行选择。
插件名称 | 类型 | 功能说明 |
提取字段 | 拓展 | 支持如下模式:
|
添加字段 | 拓展 | 向日志中添加新字段。 |
丢弃字段 | 拓展 | 删除指定字段。 |
重命名字段 | 拓展 | 修改字段名称。 |
打包字段 | 拓展 | 将多个字段打包为一个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模式提取日志字段。
正则模式
标定模式
CSV模式
单字符分隔符模式
多字符分隔符模式
键值对模式
Grok模式
添加字段插件
使用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配置方式
参数说明
配置
type为processor_add_fields,detail说明如下表所示。参数
类型
是否必选
说明
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配置方式
参数说明
配置type为processor_drop,detail说明如下表所示。
参数
类型
是否必选
说明
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配置方式
参数配置
配置
type为processor_rename,detail说明如下表所示。参数
类型
是否必选
说明
NoKeyErrorBoolean
否
日志中无您所指定的原始字段时,系统是否报错。
true:报错。
false(默认值):不报错。
SourceKeysString数组
是
待重命名的原始字段。
DestKeysString数组
是
重命名后的字段。
配置示例
将
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配置方式
参数说明
配置type为processor_packjson,detail说明如下表所示。
参数
类型
是否必选
说明
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插件处理配置

处理结果

JSON配置方式
参数说明
配置
type为processor_json,detail说明如下表所示。参数
类型
是否必选
说明
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 } } ] }处理结果

字段值映射插件
使用processor_dict_map插件进行字段值映射。此处介绍processor_dict_map插件的参数说明和配置示例。
配置说明
表单配置方式
配置处理器类型为字段值映射处理,相关参数说明如下表所示。
参数 | 说明 |
原始字段 | 原始字段名。 |
结果字段 | 映射后的结果字段名。 |
映射字典 | 映射字典。设置键和值,将键映射到值上。 映射字典较小时,可直接通过此参数完成设置。不需要提供本地的CSV字典文件。 重要 当您设置了本地字典后,映射字典配置不生效。 |
本地字典 | CSV格式的字典文件。该CSV文件的分隔符为半角逗号(,),字段引用表示为半角引号(")。 |
高级参数>处理原始字段缺失 | 选中该选项后,当原始日志中缺失目标字段时,将处理缺失字段,即按照结果字段填充值中的值进行填充。 |
高级参数>映射字典最大大小 | 映射字典的最大大小。默认值为1000,即最多可存储1000条映射规则。 如果要限制插件对服务器内存的占用,可调小该值。 |
高级参数>原日志处理方法 | 当映射后的字段在原始日志中已存在时的处理方式。
|
JSON配置方式
配置type为processor_dict_map,detail说明如下表所示。
参数 | 类型 | 是否必选 | 说明 |
SourceKey | String | 是 | 原始字段名。 |
MapDict | Map | 否 | 映射字典。 映射字典较小时,可直接通过此参数完成设置。不需要提供本地的CSV字典文件。 重要 当您设置了DictFilePath参数后,MapDict参数中的配置不生效。 |
DictFilePath | String | 否 | CSV格式的字典文件。该CSV文件的分隔符为半角逗号(,),字段引用表示为半角引号(")。 |
DestKey | String | 否 | 映射后的字段名。 |
HandleMissing | Boolean | 否 | 当原始日志中缺失目标字段时,系统是否处理。
|
Missing | String | 否 | 处理原始日志中缺失的目标字段时,设置对应的填充值。默认值为 当配置HandleMissing为true时,该参数配置生效。 |
MaxDictSize | Int | 否 | 映射字典的最大大小。默认值为1000,即最多可存储1000条映射规则。 如果要限制插件对服务器内存的占用,可调小该值。 |
Mode | String | 否 | 当映射后的字段在原始日志中已存在时的处理方式。
|
字符串替换
使用processor_string_replace插件,实现文本日志的全文替换、正则提取替换或去除转义符。
配置说明
Logtail 1.6.0及以上版本支持processor_string_replace插件。
表单配置方式
配置处理器类型为字符串替换,相关参数说明如下表所示。
参数 | 说明 |
原始字段 | 原始字段名。 |
匹配方式 | 指定匹配方式。可选值:
|
匹配内容 | 输入匹配的内容。
|
替换内容 | 用于替换的字符串。
|
结果字段 | 为替换后的内容指定新字段。 |
JSON配置方式
配置type为processor_string_replace,detail说明如下表所示。
参数 | 类型 | 是否必选 | 说明 |
| String | 是 | 原始字段名。 |
| String | 是 | 指定匹配方式。可选值:
|
| String | 否 | 输入匹配内容。
|
| String | 否 | 用于替换的字符串,默认值为""。
|
| String | 否 | 为替换后的内容指定新字段,默认不新增字段。 |
配置示例
通过字符串匹配方式进行替换
通过字符串匹配方式进行替换,将content字段值中的Error:替换为空字符串。
表单配置方式
原始日志如下:
"content": "2023-05-20 10:01:23 Error: Unable to connect to database."Logtail插件处理配置:

处理结果:
"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插件处理配置:

处理结果:
"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插件处理配置:

处理结果:
"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插件处理配置:

处理结果:
"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}",
相关文档
通过API接口配置Logtail流水线:
通过控制台配置处理插件:







