tencent cloud

日志服务

动态与公告
产品动态
公告
新手指引
产品简介
产品概述
产品优势
地域和访问域名
规格与限制
基本概念
购买指南
计费概述
产品定价
按量计费(后付费)
欠费说明
清理日志服务资源
成本优化
常见问题
快速入门
一分钟入门指南
入门指南
使用 Demo 日志快速体验 CLS
操作指南
资源管理
权限管理
日志采集
指标采集
日志存储
指标存储
检索分析(日志主题)
检索分析(指标主题)
仪表盘
数据处理
投递与消费
监控告警
云产品中心
DataSight 独立控制台
历史文档
实践教程
日志采集
检索分析
仪表盘
监控告警
投递和消费
成本优化
开发者指南
通过 iframe 内嵌 CLS(旧方案)
通过 Grafana 使用 CLS
API 文档
History
Introduction
API Category
Making API Requests
Topic Management APIs
Log Set Management APIs
Index APIs
Topic Partition APIs
Machine Group APIs
Collection Configuration APIs
Log APIs
Metric APIs
Alarm Policy APIs
Data Processing APIs
Kafka Protocol Consumption APIs
CKafka Shipping Task APIs
Kafka Data Subscription APIs
COS Shipping Task APIs
SCF Delivery Task APIs
Scheduled SQL Analysis APIs
COS Data Import Task APIs
Data Types
Error Codes
常见问题
健康监测问题解释
采集相关
检索分析相关
其他问题
服务等级协议
CLS 政策
隐私协议
数据处理和安全协议
联系我们
词汇表

字段处理函数

PDF
聚焦模式
字号
最后更新时间: 2025-12-05 11:30:39

简介

字段处理函数,就是对日志中的字段进行处理,如下图所示:



v 函数

函数定义

获取字段值,返回对应字符串。

语法描述

v(字段名)

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
field
字段名
string
-
-

示例

获取 "message" 字段的值,将它赋值给一个新字段 "new_message"。
原始日志:
{"message": "failed", "status": "500"}
加工规则:
fields_set("new_message", v("message"))
加工结果:
{"message": "failed", "new_message": "failed","status": "500"}

fields_drop 函数

函数定义

根据字段名进行匹配,丢弃匹配到的字段。

语法描述

fields_drop(字段名1, 字段名2, ..., regex=False,nest=False)

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
可变参,字段名或字段名的正则表达式
可变参,字段名或字段名的正则表达式
string
-
-
regex
是否启用正则表达式,匹配模式为全匹配
bool
False
-
nest
是否是嵌套字段
bool
False
-

示例

示例1:丢弃字段名为 "field" 的字段。 原始日志:
{"field": "a,b,c", "status": "500"}
加工规则:
fields_drop("field")
加工结果:
{"status":"500"}
示例2:嵌套字段的处理。 原始日志:
{"condition":"{\\"a\\":\\"aaa\\", \\"c\\":\\"ccc\\", \\"e\\":\\"eee\\"}","status":"500"}
加工规则:
//nest=True,表示该字段是嵌套字段,将condition.a和condition.c丢弃后,只剩下condition.e字段。
t_if(if_json(v("condition")), fields_drop("condition.a", "condition.c", nest=True))
加工结果:
{"condition":"{\\"e\\":\\"eee\\"}","status":"500"}
示例3:嵌套字段的处理。 原始日志:
{"App": "thcomm","Message": "{\\"f_httpstatus\\": \\"200\\",\\"f_requestId\\": \\"2021-11-09 08:40:17.832\\tINFO\\tservices/http_service.go:361\\tbb20ac02-fcbc-4a56-b1f1-4064853b79da\\",\\"f_url\\": \\"wechat.wecity.qq.com/trpcapi/MbpsPaymentServer/scanCode\\"}"}
加工规则:
//nest=True,表示该字段是嵌套字段,将Message.f_requestId", Message.f_url丢弃后,只剩下字f_httpstatus段。
t_if(if_json(v("Message")), fields_drop("Message.f_requestId", "Message.f_url", nest=True))
加工结果:
{"App":"thcomm","Message":"{\\"f_httpstatus\\":\\"200\\"}"}

fields_keep 函数

函数定义

根据字段名进行匹配,保留匹配到的字段。

语法描述

fields_keep(字段名1, 字段名2, ..., regex=False)

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
可变参,字段名或字段名的正则表达式
可变参,字段名或字段名的正则表达式
string
-
-
regex
是否启用正则表达式,匹配模式为全匹配
bool
False
-

示例

保存字段名为 "field" 的字段,其余字段丢弃。
原始日志:
{"field": "a,b,c", "status": "500"}
加工规则:
fields_keep("field")
加工结果:
{"field":"a,b,c"}

fields_pack 函数

函数定义

根据正则表达式来匹配字段名,并将匹配到的字段打包到新的字段,新字段值使用 JSON 格式进行组织。

语法描述

fields_pack(目标字段名, include=".*", exclude="", drop_packed=False)

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
output
打包后的新字段名称
string
-
-
include
包含字段名称的正则
string
-
-
exclude
排除字段名称的正则
string
-
-
drop_packed
是否删除原有被打包的字段
bool
False
-

示例

原始日志:
{"field_a": "a,b,c","field_b": "abc", "status": "500"}
加工规则:
fields_pack("new_field","field.*", drop_packed=False)
加工结果:
{"new_field":"{\\"field_a\\":\\"a,b,c\\",\\"field_b\\":\\"abc\\"}","field_a":"a,b,c","field_b":"abc","status":"500"}

fields_set 函数

函数定义

用来设置字段值,或者增加新字段。

语法描述

fields_set(字段名1, 字段值1, 字段名2, 字段值2, mode="overwrite")

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
可变参
key、value 交替的参数列表
string
-
-
-
mode
字段覆写模式
string
overwrite
-

示例

示例1:将级别从 “Info” 修改为 “Waring”。 原始日志:
{"级别": "Info"}
加工规则:
fields_set("级别", "Warning")
加工结果:
{"级别", "Warning"}
示例2:新增两个字段,"new"和"new2"。 原始日志:
{"a": "1", "b": "2", "c": "3"}
加工规则:
fields_set("new", v("b"), "new2", v("c"))
加工结果:
{"a":"1","b":"2","c":"3","new":"2","new2":"3"}

fields_rename 函数

函数定义

字段重命名。

语法描述

fields_rename(字段名1, 新字段名1, 字段名2, 新字段名2, regex=False)

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
可变参
旧字段名、新字段名交替的参数列表
string
-
-
-
regex
字段名是否启用正则匹配,启用使用正则匹配旧字段名,不启用则是相等匹配
bool
False
-

示例

原始日志:
{"regieeen": "bj", "status": "500"}
加工规则:
fields_rename("reg.*", "region", regex=True)
加工结果:
{"region":"bj","status":"500"}

has_field 函数

函数定义

字段存在时,返回 True,否则返回 False。

语法描述

has_field(字段名)

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
field
字段名
string
-
-

示例

原始日志:
{"regiooon": "bj", "status": "500"}
加工规则:
t_if(has_field("regiooon"), fields_rename("regiooon", "region"))
加工结果:
{"region":"bj","status":"500"}

not_has_field 函数

函数定义

字段不存在时,返回 True,否则返回 False。

语法描述

not_has_field(字段名)

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
field
字段名
string
-
-

示例

原始日志:
{"status": "500"}
加工规则:
t_if(not_has_field("message"), fields_set("no_message", True))
加工结果:
{"no_message":"TRUE","status":"500"}

extract_tag 函数

函数定义

为动态生成的主题打标签。从日志字段中提取标签值,并将这些标签值作为动态生成主题的标签。
注意:
仅可用于 log_auto_output() 函数 之后。
其中静态标签和动态标签的总数不超过10对。
例如这条语句:log_auto_output(v("pd"),"我的日志集",index_options="content_index", period=3,tag_static="Ckafka:test_env,developer:MikeWang",tag_dynamic=extract_tag("pd",v("pd"),"team", v("team")))
使用了 tag_Static 静态标签和 tag_dynamic 动态标签。

语法描述

extract_tag(标签名1,标签值1,标签名2,标签值2....)

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
标签名
标签名
string
-
-
标签值
标签值
string
-
-

示例

原始日志:
[
{"pd": "CDN", "team": "test"},
{"pd": "CLS", "team": "product"},
{"pd": "COS", "team": "sales"},
{"pd": "CLS", "team": "test"},
{"pd": "CKafka", "team": "product"}
]
说明:
同一个日志主题,相同的标签名,仅最早的标签值生效。该示例中,名称为 CLS 的日志主题,team:produc 是最早的标签值,该标签生效,后续的 team:test 标签不生效,因为它们的标签名相同。
加工规则:
log_auto_output(v("pd"),"我的日志集",index_options="content_index", period=3,tag_static="Ckafka:test_env",tag_dynamic=extract_tag("pd",v("pd"),"team", v("team")))
加工结果:
生成了名为 COS、CKafka、CLS、CDN 的日志主题,并为这几个日志主题打标签。语句中有静态标签 tag_static 1对,动态标签 tag_dynamic 2对,因此都生成了3对标签。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈