tencent cloud

文档反馈

行处理函数

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

    简介

    对一行日志进行处理,包括过滤、分发、分裂等函数。
    
    

    log_output 函数

    函数定义

    输出到指定的目标主题。可以配合分支条件使用,也可以单独使用。

    语法描述

    log_output(别名),别名在配置加工任务时定义。

    参数说明

    参数名称
    参数描述
    参数类型
    是否必须
    参数默认值
    参数取值范围
    alias
    目标主题的别名
    string
    -
    -

    示例

    按照 loglevel 字段值为 waring/info/error 的情况,分发到三个不同的日志主题中。
    原始日志:
    [
    {
    "loglevel": "warning"
    },
    {
    "loglevel": "info"
    },
    {
    "loglevel": "error"
    }
    ]
    加工规则:
    //按照loglevel字段值为waring/info/error的情况,分发到三个不同的日志主题中。
    t_switch(regex_match(v("loglevel"),regex="info"),log_output("info_log"),regex_match(v("loglevel"),regex="warning"),log_output("warning_log"),regex_match(v("loglevel"),regex="error"),log_output("error_log"))

    log_split 函数

    函数定义

    使用分隔符结合 jmes 表达式,对特定字段进行拆分,拆分结果分裂为多行日志。

    语法描述

    log_split(字段名, sep=",", quote="\\"", jmes="", output="")

    参数说明

    参数名称
    参数描述
    参数类型
    是否必须
    参数默认值
    参数取值范围
    field
    待提取的字段名
    string
    -
    -
    sep
    分隔符
    string
    ,
    任意单字符
    quote
    将值包括起来的字符
    string
    -
    -
    jmes
    jmes 表达式,详情请参考 JMESPath
    string
    -
    -
    output
    单个字段名
    string
    -
    -

    示例

    示例1:字段中有多个值的日志分裂
    {"field": "hello Go,hello Java,hello python","status":"500"}
    加工规则:
    //使用分割符“,”,将日志分隔成三条。
    log_split("field", sep=",", output="new_field")
    加工结果:
    {"new_field":"hello Go","status":"500"}
    {"new_field":"hello Java","status":"500"}
    {"new_field":"hello python","status":"500"}
    示例2:利用 JMES 对日志进行分裂。
    {"field": "{\\"a\\":{\\"b\\":{\\"c\\":{\\"d\\":\\"a,b,c\\"}}}}", "status": "500"}
    加工规则:
    //a.b.c.d节点的值为“a,b,c”
    log_split("field", jmes="a.b.c.d", output="new_field")
    加工结果:
    {"new_field":"a","status":"500"}
    {"new_field":"b","status":"500"}
    {"new_field":"c","status":"500"}
    示例3:包含有 JSON 数组的日志分裂。
    {"field": "{\\"a\\":{\\"b\\":{\\"c\\":{\\"d\\":[\\"a\\",\\"b\\",\\"c\\"]}}}}", "status": "500"}
    加工规则:
    log_split("field", jmes="a.b.c.d", output="new_field")
    加工结果:
    {"new_field":"a","status":"500"}
    {"new_field":"b","status":"500"}
    {"new_field":"c","status":"500"}

    log_drop 函数

    函数定义

    丢弃符合条件的日志。

    语法描述

    log_drop(条件1)

    参数说明

    参数名称
    参数描述
    参数类型
    是否必须
    参数默认值
    参数取值范围
    condition
    返回值为 bool 类型的函数表达式
    bool
    -
    -

    示例

    丢弃 status=200的日志,其余保留。
    原始日志:
    {"field": "a,b,c", "status": "500"}
    {"field": "a,b,c", "status": "200"}
    加工规则:
    log_drop(op_eq(v("status"), 200))
    加工结果:
    {"field":"a,b,c","status":"500"}

    log_keep 函数

    函数定义

    保留符合条件的日志。

    语法描述

    log_keep(条件1)

    参数说明

    参数名称
    参数描述
    参数类型
    是否必须
    参数默认值
    参数取值范围
    condition
    返回值为 bool 类型的函数表达式
    bool
    -
    -

    示例

    保留 status=500的日志,其余丢弃。
    原始日志:
    {"field": "a,b,c", "status": "500"}
    {"field": "a,b,c", "status": "200"}
    加工规则:
    log_keep(op_eq(v("status"), 500))
    加工结果:
    {"field":"a,b,c","status":"500"}

    log_split_jsonarray_jmes 函数

    函数定义

    将日志根据 jmes 语法将 JSON 数组拆分和展开。

    语法描述

    log_split_jsonarray_jmes("field", jmes="items", prefix="")

    参数说明

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

    示例

    示例1 原始日志:
    {"common":"common","result":"{\\"target\\":[{\\"a\\":\\"a\\"},{\\"b\\":\\"b\\"}]}"}
    加工规则:
    log_split_jsonarray_jmes("result",jmes="target")
    fields_drop("result")
    加工结果:
    {"common":"common", "a":"a"}
    {"common":"common", "b":"b"}
    示例2 原始日志:
    {"common":"common","target":"[{\\"a\\":\\"a\\"},{\\"b\\":\\"b\\"}]"}
    加工规则:
    log_split_jsonarray_jmes("target",prefix="prefix_")
    fields_drop("target")
    加工结果:
    {"prefix_a":"a", "common":"common"}
    {"prefix_b":"b", "common":"common"}
    
    联系我们

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

    技术支持

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

    7x24 电话支持