Todos os produtos
Search
Central de documentação

Simple Log Service:Sintaxe básica

Última atualização: Sep 12, 2026

Este tópico descreve a sintaxe básica da Domain-Specific Language (DSL) do Simple Log Service (SLS).

Comentários

Para adicionar um comentário explicativo à sintaxe, inicie a linha com o caractere cerquilha (#). Exemplo:

# Set the default topic for logs. This is a comment at the beginning of a line.
e_set("__topic__", "access_log")   # Set the default topic for logs. This is a comment at the end of a line.

Quebras de linha

Se a lista de parâmetros de uma chamada de função for muito extensa, adicione uma quebra de linha.

  • Se a estrutura da função contiver uma vírgula (,), insira a quebra de linha logo após a vírgula.

  • Se uma string for longa e exigir uma quebra de linha, use uma barra invertida (\).

Exemplo:

e_set("__topic__", "v1",
        "type", "v2",       # When parameters are separated by commas (,), you can add a line break directly.
        "length", 100)
e_set("__topic__", "this is a very long long long .........." \
                            "......long text")  # Use a backslash (\) to add a line break.

Métodos de invocação de funções

  • Invocação básica

    e_set("abc", "xyz")
    Nota

    Ao escrever uma instrução de transformação de dados, garanta que os tipos de dados e a quantidade de parâmetros de entrada correspondam à sintaxe da função.

  • Invocação básica com parâmetros variáveis

    str_replace(value, old [,new [,count] ]) 
    Nota

    Se os parâmetros de uma função incluírem colchetes ([]), os parâmetros internos, como new e count, são opcionais. Não é possível chamá-los como parâmetros nomeados; informe-os na sequência especificada.

    # Invalid examples
    str_replace("a-b-c", "-", new='%')
    str_replace("a-b-c", "-", new='%', count=1)
    # Valid examples
    str_replace("a-b-c", "-", '%')
    str_replace("a-b-c", "-", '%', 2)
  • Invocação com parâmetros nomeados

    Um parâmetro com valor padrão é considerado um parâmetro nomeado. Por exemplo, mode em e_set("abc", "xyz", mode="fill") é um parâmetro nomeado.

    • Em certas funções, é obrigatório passar valores para parâmetros nomeados sob condições específicas. Para mais detalhes, consulte a descrição dos parâmetros de cada função.

    • Para atribuir um valor a um parâmetro nomeado, use o formato: mode=....

    • A ordem de especificação não importa quando há múltiplos parâmetros nomeados. Assim, e_csv("data", ["f1", "f2", "f3"], sep='#', quote="|") equivale a e_csv("data", ["f1", "f2", "f3"], quote="|", sep='#').

    Nota

    Em uma chamada de função, especifique os parâmetros nomeados sempre após os parâmetros não nomeados.

  • Invocações de funções aninhadas

    Use o valor de retorno de uma função como parâmetro para outra. Certifique-se de que os tipos de dados sejam compatíveis. Exemplo:

    e_set("abc", v("xyz"))
    e_set("abc", str_lower(v("xyz")))
  • Parâmetros variáveis

    Algumas funções aceitam parâmetros variáveis. A notação v("f1", ....) indica a possibilidade de passar parâmetros adicionais, como em v("f1", "f2", "f3").

    Posicione os parâmetros nomeados ao final da lista de argumentos. Por exemplo: v("f1", "f2", "f3", "f4", mode="fill").

Operadores

  • Operadores de comparação

    O modo padrão da DSL do SLS oferece suporte a operadores de comparação, incluindo >, <, >=, <=, !=, and ==. Alternativamente, use as funções de comparação do SLS para obter o mesmo resultado.

    • Uso direto de operadores de comparação

      # The following examples show how to use comparison operators. If the comparison result is True, the log is dropped.
      e_if(3 > 2, DROP)       # If 3 is greater than 2, the log is dropped.
      e_if(3 < 2, DROP)       # If 3 is less than 2, the log is dropped.
      e_if(3 >= 2, DROP)      # If 3 is greater than or equal to 2, the log is dropped.
      e_if(3 <= 2, DROP)      # If 3 is less than or equal to 2, the log is dropped.
      e_if(3 == 2, DROP)      # If 3 is equal to 2, the log is dropped.
      e_if(3 != 2, DROP)      # If 3 is not equal to 2, the log is dropped.
      e_if(1 < 2 < 3, DROP)   # If 2 is greater than 1 and less than 3, the log is dropped.
      e_if(0 < ct_int(v('x')) < 100, DROP) # If the value of the x field is greater than 0 and less than 100, the log is dropped.
    • Uso das funções de comparação do SLS

      Operação

      Função

      Exemplo

      Igual a ==

      op_eq

      op_eq(v("name"), "xiao ming")

      Diferente de !=

      op_ne

      op_ne(v("name"), "xiao ming")

      Maior que >

      op_gt

      op_gt(ct_int(v("age")))

      Maior ou igual a >=

      op_ge

      op_ge(ct_int(v("age")), 18)

      Menor que <

      op_lt

      op_lt(ct_int(v("age")), 18)

      Menor ou igual a <=

      op_le

      op_le(ct_int(v("age")), 18)

  • Operadores lógicos

    O modo padrão da DSL do SLS suporta operadores lógicos, incluindo and, or e not. Você também pode usar as funções lógicas do SLS para obter o mesmo efeito.

    • Aplicação direta de operadores lógicos

      # The following examples show how to use logical operators. If the result of the logical operation is True, the log is dropped.
      e_if(True and False, DROP)     # The result is False.
      e_if(True or False, DROP)      # The result is True.
      e_if(True and not False, DROP) # The result is True.
      e_if(3 > 2 and 1 < 3, DROP)    # The result is True.
      e_if(ct_int(v('x')) > 100 or ct_int(v('y')) < 100, DROP) # The value of the x field is greater than 100 or the value of the y field is less than 100.
    • Uso das funções lógicas do SLS

      Operação

      Função

      Exemplo

      E lógico and

      op_and

      op_and(op_gt(v("age"), 18), op_lt(v("age"), 31))

      OU lógico or

      op_or

      op_or(op_le(v("age"), 18), op_gt(v("age"), 65))

      NÃO lógico not

      op_not

      op_not(op_gt(v("age"), 18))

  • Outros operadores

    Os operadores listados abaixo não têm suporte direto no modo padrão da DSL do SLS. Para executar essas operações, use as funções correspondentes do SLS.

    Operações baseadas em cenários

    Função

    Exemplo

    Adição +

    op_add

    op_add(v("age"), 2)

    Subtração -

    op_sub

    op_sub(v("age"), 2)

    Multiplicação *

    op_mul

    op_mul(v("size"), 2)

    Exponenciação **

    op_pow

    op_pow(v("size"), 2)

    Divisão inteira //

    op_div_floor

    op_div_floor(v("bytes"), 1024)

    Operação de módulo %

    op_mod

    op_mod(v("age"), 10)

    Negação -

    op_neg

    op_neg(v("profit"))

    Verificação de existência in

    op_in

    op_in(["pass", "ok"], v("result"))

    Verificação de não existência not in

    op_not_in

    op_not_in(["pass", "ok"], v("result"))

    Fatiamento de string [ ...]

    op_slice

    op_slice(v("message"), 0, 20)

    Por exemplo, para definir o valor do campo a como 3600*6:

    # * 
    e_set("a", 3600 * 6)           # Invalid
    e_set("a", op_mul(3600, 6))    # Valid
    
    # /
    e_set("bytes_kb", v("bytes") / 1024)                 # Invalid
    e_set("bytes_kb", op_div_floor(v("bytes"), 1024))    # Valid

Avaliação de verdadeiro e falso

Certas funções aceitam uma condição e determinam a lógica subsequente com base no valor dessa condição. A condição pode ser um campo estático ou o valor de retorno de uma expressão.

A DSL do SLS permite avaliar qualquer tipo de dado. A tabela a seguir descreve as condições que resultam em valores verdadeiros ou falsos para diferentes tipos de dados.

Tipo de dado

Condição para Verdadeiro

Condição para Falso

Booleano

True, true

False, false

None

None

Sempre False

Numérico

Diferente de 0 ou 0,0

0 ou 0,0

String

Não vazia

String vazia

Bytes

Não vazio

Bytes vazios

Tupla

Não vazia

Tupla vazia

Lista

Não vazia

Lista vazia

Dicionário

Não vazio

Dicionário vazio

Tabela

Verdadeiro se existir

Objeto nulo (None)

Datetime

Verdadeiro se existir

Objeto nulo (None)

Veja abaixo um exemplo de evento descartado:

e_if(True, DROP)                     # If the input is True, the event is dropped.
e_if(1, DROP)                        # If the input is 1, the event is dropped.
e_if(v("abc"), DROP)                 # If the abc field exists and is not empty, the event is dropped.
e_if(str_isdigit(v("abc")), DROP)    # If the abc field exists and its content consists only of digits, the event is dropped.