tencent cloud

文档反馈

字段处理函数

最后更新时间:2024-01-20 17:59:06

    简介

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

    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"}
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持