日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

流程控制函數

本文主要介紹流程控制函數的語法規則,包括參數解釋、函數示例等。

函數列表

函數

說明

e_compose

用于組合一系列操作。

  • 常用于e_if、e_switch、e_if_else中組合操作。

  • 依次調用操作,將日志傳遞轉換并返回最后的日志。

  • 對于某一條日志,如果其中某一操作刪除了日志,則不會再執行后續操作。

支持和其他函數組合使用。相關示例,請參見復雜JSON數據加工。

e_if

條件與操作組合。

  • 滿足條件則進行對應操作,不滿足條件則不進行對應操作,直接進行下一個條件判斷。

  • 對于某一條日志,如果其中某一操作刪除了日志,則不會再執行后續操作。

e_if(
    e_has("a"), e_output("target-a"), 
    e_has("b"), e_output("target-b"),
)

例如,該加工規則相當于以下Python代碼結構:

if e_has("a"):
    e_output("target-a")
if e_has("b"):
    e_output("target-b")

支持和其他函數組合使用。相關示例,請參見復雜JSON數據加工。

e_if_else

根據條件判斷的結果進行對應操作。

e_if_else(e_has("a"), e_output("target-a"), e_output("target-b"))

例如,該加工規則相當于以下Python代碼結構:

if e_has("a"):
    e_output("target-a")
else:
    e_output("target-b")

e_switch

條件與操作的組合。

  • 滿足條件則進行對應操作并返回結果,不滿足條件則不進行對應操作,直接進行下一個條件判斷。

  • 如果沒有滿足任何條件,但配置了默認參數,則執行默認配置的操作并返回結果。

  • 對于某一條日志,如果其中某一操作刪除了日志,則不會再執行后續操作。

e_switch(
    e_has("a"), e_output("target-a"), 
    e_has("b"), e_output("target-b"),
    default=e_output("target-default"),
)

例如,該加工規則相當于以下Python代碼結構:

if e_has("a"):
    e_output("target-a")
elif e_has("b"):
    e_output("target-b")
else:
    e_output("target-default")

支持和其他函數組合使用。相關示例,請參見多目標Logstore數據分發。

e_compose

組合多個操作。

  • 函數格式

    e_compose(操作1, 操作2, ……)     
  • 參數說明

    參數名稱

    參數類型

    是否必填

    說明

    操作1

    全局操作函數

    全局操作函數或其組合。

    操作2

    全局操作函數

    全局操作函數或其組合。

  • 返回結果

    返回操作后日志。

  • 函數示例

    如果content字段的值為123,則先刪除age字段和name字段,然后將content字段的值設置為ctx

    • 原始日志

      content: 123
      age: 23
      name: twiss
    • 加工規則

      e_if(
          e_search("content==123"),
          e_compose(e_drop_fields("age|name"), e_rename("content", "ctx")),
      )
    • 加工結果

      ctx: 123
  • 更多參考

    支持和其他函數組合使用。相關示例,請參見復雜JSON數據加工

e_if

根據判斷條件執行操作。

  • 函數格式

    e_if(條件, 操作)
    e_if(條件1, 操作1, 條件2, 操作2, ……)
    說明

    函數中條件操作必須成對出現。

  • 參數說明

    參數名稱

    參數類型

    是否必填

    說明

    條件

    任意

    表達式或其組合。其結果不是布爾值時,會進行真假判斷。

    操作

    全局操作函數

    全局操作函數或其組合。

  • 返回結果

    返回加工處理后的日志。

  • 函數示例

    • 示例1:字段值匹配后再進行操作。

      result字段值為failedfailure時,設置__topic__字段的值為login_failed_event。

      e_if(e_match("result", r"failed|failure"), e_set("__topic__", "login_failed_event"))
    • 示例2:根據字段值判斷后再提取數據。

      request_body字段存在且值非空時,調用字段類操作函數JSON將request_body字段展開成多個值。

      e_if(v("request_body"), e_json("request_body"))
    • 示例3:高級判斷后再進行操作。

      valid字段的值為小寫failed時,丟棄日志。

      e_if(op_eq(str_lower(v("valid")), "failed"), DROP)
    • 示例4:多個條件按順序操作。

      e_if(True, e_set("__topic__", "default_login"), 
           e_match("valid", "failed"), e_set("__topic__", "login_failed_event")
        )
  • 更多參考

    支持和其他函數組合使用。相關示例,請參見復雜JSON數據加工。

e_if_else

根據判斷條件的結果執行操作。

  • 函數格式

    e_if_else(條件, 真時操作, 假時操作)
  • 參數說明

    參數名稱

    參數類型

    是否必填

    說明

    條件

    任意

    表達式或其組合。其結果不是布爾值時,會進行真假判斷。

    真時操作

    全局操作函數

    全局操作函數或其組合。

    假時操作

    全局操作函數

    全局操作函數或其組合。

  • 返回結果

    返回不同條件對應的操作結果。

  • 函數示例

    如果result字段的值為okpass,或者status字段的值為200,則保留日志。

    • 原始日志

      result: ok
      status: 400
      result: Pass
      status: 200
      result: failure
      status: 500
    • 加工規則

      e_if_else(
          op_or(e_match("result", r"(?i)ok|pass"), e_search("status== 200")), KEEP, DROP
      )
    • 加工結果:只保留第一條和第二條日志,第三條日志被刪除。

      result: ok
      status: 400
      result: Pass
      status: 200

e_switch

組合多個條件和操作。

  • 函數格式

    e_switch(條件1, 操作1, ……, default=None)
    說明

    函數中條件操作必須成對出現。

  • 參數說明

    參數名稱

    參數類型

    是否必填

    說明

    條件

    任意

    表達式或其組合。其結果不是布爾值時,會進行真假判斷。

    操作

    全局操作函數

    全局操作函數或其組合。

    default

    全局操作函數

    默認的全局操作函數或其組合。沒有條件滿足時執行該操作。

  • 返回結果

    返回加工處理后的日志。

  • 函數示例

    • 如果content字段的值為123,則將__topic__字段的值設置為Number。如果data字段的值為123,則將__topic__字段的值設置為PRO

      • 原始日志

        __topic__:  
        age: 18
        content: 123
        name: maki
        data: 342
        __topic__:  
        age: 18
        content: 23
        name: maki
        data: 123
      • 加工規則

        e_switch(
            e_search("content==123"),
            e_set("__topic__", "Number", mode="overwrite"),
            e_search("data==123"),
            e_set("__topic__", "PRO", mode="overwrite"),
        )
      • 加工結果

        __topic__: Number
        age: 18
        content: 123
        name: maki
        data: 342
        __topic__: PRO
        age: 18
        content: 23
        name: maki
        data: 123
    • 通過e_switch語法和e_output語法結合,將符合規則的日志投遞到不同的Logstore。其中default=e_drop(),表示將不滿足規則的日志丟棄,不做投遞處理。若不設置default參數,則表示不滿足規則日志都會被投遞到配置的第一個Logstore中。

      • 原始日志

        __topic__: sas-log-dns
        test: aliyun
        
        __topic__: aegis-log-network
        test:ecs
        
        __topic__: local-dns
        test:sls
        
        __topic__: aegis-log-login
        test: sls
      • 加工規則

        e_switch(e_match("__topic__","sas-log-dns"),e_output(name="target1"),
        e_match("__topic__","sas-log-process"),e_output(name="target2"),
        e_match("__topic__","local-dns"),e_output(name="target3"),
        e_match("__topic__","aegis-log-network"),e_output(name="target4"),
        e_match("__topic__","aegis-log-login"),e_output(name="target5"),
        default=e_drop())
  • 更多參考

    支持和其他函數組合使用。相關示例,請參見多目標Logstore數據分發。