Todos os produtos
Search
Central de documentação

Simple Log Service:Funções de controle de fluxo

Última atualização: Jul 03, 2026

As funções de controle de fluxo determinam como as operações de transformação de dados são executadas com base em condições. Use essas funções para compor operações sequenciais, aplicar lógica condicional e encaminhar logs para diferentes destinos.

Funções

Função

Descrição

e_compose

Combina várias operações em uma sequência.

  • Executa as operações especificadas em um log sequencialmente e retorna o resultado.

  • Se uma operação excluir o log, as operações subsequentes serão ignoradas.

Suporta combinação com outras funções. Para mais informações, consulte Transformar dados JSON complexos.

e_if

Avalia condições e executa as operações correspondentes. Suporta vários pares de condição-operação.

  • Se uma condição for atendida, a operação correspondente será executada. Caso contrário, a próxima condição será avaliada.

  • Se uma operação excluir o log, as operações subsequentes serão ignoradas.

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

Esta regra de transformação é equivalente ao seguinte código Python:

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

Suporta combinação com outras funções. Para mais informações, consulte Transformar dados JSON complexos.

e_if_else

Avalia uma condição e executa uma de duas operações com base no resultado.

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

Esta regra de transformação é equivalente ao seguinte código Python:

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

e_switch

Avalia vários pares de condição-operação em sequência, semelhante a uma cadeia if-elif-else.

  • Se uma condição for atendida, a operação correspondente será executada e o resultado será retornado. Caso contrário, a próxima condição será avaliada.

  • Se nenhuma condição for atendida e o parâmetro padrão estiver configurado, a operação padrão será executada.

  • Se uma operação excluir o log, as operações subsequentes serão ignoradas.

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

Esta regra de transformação é equivalente ao seguinte código Python:

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

Suporta combinação com outras funções. Para mais informações, consulte Distribuir dados para vários Logstores de destino.

e_compose

Combina várias operações em um pipeline sequencial.

  • Sintaxe

    e_compose(Operation 1, Operation 2, ...)
  • Parâmetros

    Nome do parâmetro

    Tipo

    Obrigatório

    Descrição

    Operation 1

    Função de processamento global

    Sim

    Uma ou mais funções de processamento global.

    Operation 2

    Função de processamento global

    Não

    Uma ou mais funções de processamento global.

  • Retorno

    Retorna o log após a execução de todas as operações.

  • Exemplos

    Se o valor do campo content for 123, exclua os campos age e name e renomeie o campo content para ctx.

    • Log original

      content: 123
      age: 23
      name: twiss
    • Regra de transformação

      e_if(
          e_search("content==123"),
          e_compose(e_drop_fields("age|name"), e_rename("content", "ctx")),
      )
    • Resultado

      ctx: 123
  • Referências

    Suporta combinação com outras funções. Para mais informações, consulte Transformar dados JSON complexos.

e_if

Avalia condições e executa as operações correspondentes.

  • Sintaxe

    e_if(Condition, Operation)
    e_if(Condition 1, Operation 1, Condition 2, Operation 2, ...)
    Nota

    Especifique os parâmetros Condition e Operation em pares.

  • Parâmetros

    Nome do parâmetro

    Tipo

    Obrigatório

    Descrição

    Condition

    Arbitrário

    Sim

    Uma expressão ou uma combinação de expressões. Resultados não booleanos são avaliados quanto à veracidade.

    Operation

    Função de processamento global

    Sim

    Uma ou mais funções de processamento global.

  • Retorno

    Retorna o log após a execução das operações.

  • Exemplos

    • Exemplo 1: Corresponder a um valor de campo e executar uma operação.

      Se o valor do campo result for failed ou failure, defina o campo __topic__ como login_failed_event.

      e_if(e_match("result", r"failed|failure"), e_set("__topic__", "login_failed_event"))
    • Exemplo 2: Extrair dados com base em um valor de campo.

      Se o campo request_body existir e não estiver vazio, use a função e_json para expandir o valor do campo request_body em vários campos.

      e_if(v("request_body"), e_json("request_body"))
    • Exemplo 3: Executar uma avaliação avançada.

      Se o valor do campo valid for failed em minúsculas, descarte o log.

      e_if(op_eq(str_lower(v("valid")), "failed"), DROP)
    • Exemplo 4: Avaliar várias condições em sequência.

      e_if(True, e_set("__topic__", "default_login"),
           e_match("valid", "failed"), e_set("__topic__", "login_failed_event")
        )
  • Referências

    Suporta combinação com outras funções. Para mais informações, consulte Transformar dados JSON complexos.

e_if_else

Avalia uma condição e executa uma de duas operações com base no resultado.

  • Sintaxe

    e_if_else(Condition, Operation if true, Operation if false)
  • Parâmetros

    Nome do parâmetro

    Tipo

    Obrigatório

    Descrição

    Condition

    Arbitrário

    Sim

    Uma expressão ou uma combinação de expressões. Resultados não booleanos são avaliados quanto à veracidade.

    Operation if true

    Função de processamento global

    Sim

    Uma ou mais funções de processamento global.

    Operation if false

    Função de processamento global

    Sim

    Uma ou mais funções de processamento global.

  • Retorno

    Retorna o resultado da operação que corresponde à condição avaliada.

  • Exemplos

    Se o valor do campo result for ok ou pass, ou se o valor do campo status for 200, mantenha o log. Caso contrário, descarte o log.

    • Log original

      result: ok
      status: 400
      result: Pass
      status: 200
      result: failure
      status: 500
    • Regra de transformação

      e_if_else(
          op_or(e_match("result", r"(?i)ok|pass"), e_search("status== 200")), KEEP, DROP
      )
    • Resultado: Os dois primeiros logs são mantidos e o terceiro log é descartado.

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

e_switch

Avalia vários pares de condição-operação em sequência, semelhante a uma cadeia if-elif-else.

  • Sintaxe

    e_switch(Condition 1, Operation 1, ..., default=None)
    Nota

    Especifique os parâmetros Condition e Operation em pares.

  • Parâmetros

    Nome do parâmetro

    Tipo

    Obrigatório

    Descrição

    Condition

    Arbitrário

    Sim

    Uma expressão ou uma combinação de expressões. Resultados não booleanos são avaliados quanto à veracidade.

    Operation

    Função de processamento global

    Sim

    Uma ou mais funções de processamento global.

    default

    Função de processamento global

    Não

    Uma ou mais funções de processamento global. Executada quando nenhuma condição é atendida.

  • Retorno

    Retorna o log após a execução da operação correspondente.

  • Exemplos

    • Se o valor do campo content for 123, defina o campo __topic__ como Number. Se o valor do campo data for 123, defina o campo __topic__ como PRO.

      • Log original

        __topic__:
        age: 18
        content: 123
        name: maki
        data: 342
        __topic__:
        age: 18
        content: 23
        name: maki
        data: 123
      • Regra de transformação

        e_switch(
            e_search("content==123"),
            e_set("__topic__", "Number", mode="overwrite"),
            e_search("data==123"),
            e_set("__topic__", "PRO", mode="overwrite"),
        )
      • Resultado

        __topic__: Number
        age: 18
        content: 123
        name: maki
        data: 342
        __topic__: PRO
        age: 18
        content: 23
        name: maki
        data: 123
    • Combine e_switch com e_output para encaminhar logs que correspondem a regras específicas para diferentes Logstores. Defina default=e_drop() para descartar logs que não correspondem a nenhuma regra. Se o parâmetro default não for definido, os logs sem correspondência serão entregues ao primeiro Logstore configurado.

      • Log original

        __topic__: sas-log-dns
        test: aliyun
        
        __topic__: aegis-log-network
        test:ecs
        
        __topic__: local-dns
        test:sls
        
        __topic__: aegis-log-login
        test: sls
      • Regra de transformação

        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())
  • Referências

    Suporta combinação com outras funções. Para mais informações, consulte Distribuir dados para vários Logstores de destino.