云日志服务 LTS-提取字符串动态键值对:关键字提取

时间:2025-02-12 15:14:38

关键字提取

  1. 示例1

    以k1: q=asd&a=1&b=2&__1__=3日志为例,如果要对该格式的日志作为关键字和值提取,三种方案如下:

    • e_kv函数
      • 原始日志
        {    "k1":"q=asd&a=1&b=2&__1__=3"}
      • 加工规则
        e_kv("k1")
      • 加工结果
        {"q": "asd","a": 1,"b": 2,"k1": "q=asd&a=1&b=2&__1__=3","__1__": 3}
    • e_kv_delimit函数
      • 原始日志
        {    "k1":"q=asd&a=1&b=2&__1__=3"}
      • 加工规则
        # 以&分隔键值后,用&分隔提取出关键字e_kv_delimit("k1", pair_sep=r"&")
      • 加工结果
        {"q": "asd","a": 1,"b": 2,"k1": "q=asd&a=1&b=2&__1__=3","__1__": 3}
    • e_regex函数
      • 原始日志
        {    "k1":"q=asd&a=1&b=2&__1__=3"}
      • 加工规则
        # 自行指定字符集提取关键字和值e_regex("k1",r"(\w+)=([a-zA-Z0-9]+)",{r"\1": r"\2"})
      • 加工结果
        {"q": "asd","a": 1,"b": 2,"k1": "q=asd&a=1&b=2&__1__=3","__1__": 3}
  2. 示例2

    以content:k1=v1&k2=v2?k3:v3为例,需要特定正则提取关键字,方案如下:

    • e_kv_delimit函数
      • 原始日志
        {    "content":"k1=v1&k2=v2?k3:v3"}
      • 加工规则
        e_kv_delimit("content",pair_sep=r"&?",kv_sep="(?:=|:)")
      • 加工结果
        {"k1": "v1","k2": "v2","k3": "v3","content": "k1=v1&k2=v2?k3:v3"}
    • e_regex函数
      • 原始日志
        {    "content":"k1=v1&k2=v2?k3:v3"}
      • 加工规则
        e_regex("content",r"([a-zA-Z0-9]+)[=|:]([a-zA-Z0-9]+)",{r"\1": r"\2"})
      • 加工结果
        {"k1": "v1","k2": "v2","k3": "v3","content": "k1=v1&k2=v2?k3:v3"}
support.huaweicloud.com/bestpractice-lts/lts_07_0053.html