Todos los productos
Search
Centro de documentos

Simple Log Service:Sintaxis básica

Última actualización: Sep 12, 2026

Este tema describe la sintaxis básica del lenguaje específico de dominio (DSL) de Simple Log Service (SLS).

Comentarios

Para agregar un comentario que explique la sintaxis, inicie la línea con un signo de número (#). A continuación se muestra un ejemplo:

# 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.

Saltos de línea

Si la lista de parámetros de una llamada a función es demasiado larga, puede agregar un salto de línea.

  • Si la estructura de la función contiene una coma (,), agregue el salto de línea directamente después de la coma.

  • Si una cadena es demasiado larga y requiere un salto de línea, utilice una barra diagonal inversa (\).

Ejemplo:

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 invocación de funciones

  • Invocación básica

    e_set("abc", "xyz")
    Nota

    Cuando escriba una instrucción de transformación de datos, los tipos de datos y la cantidad de parámetros de entrada deben coincidir con la sintaxis de la función.

  • Invocación básica con parámetros variables

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

    Si los parámetros de una función incluyen corchetes ([]), los parámetros dentro de ellos, como new y count, son opcionales. No puede invocarlos como parámetros con nombre; debe invocarlos en la secuencia 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)
  • Invocación con parámetros con nombre

    Un parámetro con un valor predeterminado es un parámetro con nombre. Por ejemplo, mode en e_set("abc", "xyz", mode="fill") es un parámetro con nombre.

    • En algunas funciones, debe pasar valores para los parámetros con nombre bajo condiciones específicas. Para obtener más información, consulte la descripción de parámetros de cada función.

    • Para pasar un valor a un parámetro con nombre, utilice el formato: mode=....

    • Si hay varios parámetros con nombre, el orden en el que los especifique no importa. Por ejemplo, e_csv("data", ["f1", "f2", "f3"], sep='#', quote="|") es lo mismo que e_csv("data", ["f1", "f2", "f3"], quote="|", sep='#').

    Nota

    En una llamada a función, los parámetros con nombre siempre deben especificarse después de los parámetros sin nombre.

  • Llamadas a funciones anidadas

    Puede usar el valor devuelto por una función como parámetro en otra función. Asegúrese de que los tipos de datos sean consistentes. Por ejemplo:

    e_set("abc", v("xyz"))
    e_set("abc", str_lower(v("xyz")))
  • Parámetros variables

    Algunas funciones admiten parámetros variables. v("f1", ....) indica que puede pasar más parámetros, como v("f1", "f2", "f3").

    Cuando pase parámetros con nombre, colóquelos al final. Por ejemplo, v("f1", "f2", "f3", "f4", mode="fill").

Operadores

  • Operadores de comparación

    El modo estándar del DSL de SLS admite operadores de comparación, entre ellos >, <, >=, <=, !=, and ==. También puede usar las funciones de comparación que proporciona SLS para lograr el mismo efecto.

    • Uso directo de los operadores de comparación

      # 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 de las funciones de comparación proporcionadas por SLS

      Operación

      Función

      Ejemplo

      Igual a ==

      op_eq

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

      Distinto de !=

      op_ne

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

      Mayor que >

      op_gt

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

      Mayor o igual que >=

      op_ge

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

      Menor que <

      op_lt

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

      Menor o igual que <=

      op_le

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

  • Operadores lógicos

    El modo estándar del DSL de SLS admite los operadores lógicos and, or y not. También puede usar las funciones lógicas que proporciona SLS para lograr el mismo efecto.

    • Uso directo de los 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 de las funciones lógicas proporcionadas por SLS

      Operación

      Función

      Ejemplo

      AND lógico and

      op_and

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

      OR lógico or

      op_or

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

      NOT lógico not

      op_not

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

  • Otros operadores

    Los siguientes operadores no se admiten de forma directa en el modo estándar del DSL de SLS. SLS proporciona funciones correspondientes para lograr los mismos efectos.

    Operaciones según escenario

    Función

    Ejemplo

    Suma +

    op_add

    op_add(v("age"), 2)

    Resta -

    op_sub

    op_sub(v("age"), 2)

    Multiplicación *

    op_mul

    op_mul(v("size"), 2)

    Exponenciación **

    op_pow

    op_pow(v("size"), 2)

    División entera //

    op_div_floor

    op_div_floor(v("bytes"), 1024)

    Operación de módulo %

    op_mod

    op_mod(v("age"), 10)

    Negación -

    op_neg

    op_neg(v("profit"))

    Comprobación de existencia in

    op_in

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

    Comprobación de inexistencia not in

    op_not_in

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

    Segmentación de cadenas [ ...]

    op_slice

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

    Por ejemplo, para establecer el valor del campo a en 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

Evaluación de verdadero y falso

Algunas funciones aceptan una condición y determinan la lógica posterior según el valor de dicha condición. La condición puede ser un campo estático o el valor devuelto por una expresión.

El DSL de SLS admite la evaluación de cualquier tipo de dato. En la siguiente tabla se describen las condiciones de valores verdaderos y falsos para los distintos tipos de datos.

Tipo de dato

Condición para verdadero

Condición para falso

Booleano

True, true

False, false

Ninguna

None

Siempre falso

Numérico

Distinto de 0 o 0.0

0 o 0.0

Cadena

No vacía

Cadena vacía

Bytes

No vacío

Bytes vacíos

Tupla

No vacía

Tupla vacía

Lista

No vacía

Lista vacía

Diccionario

No vacío

Diccionario vacío

Tabla

Verdadero si existe

Objeto nulo (None)

Fecha y hora

Verdadero si existe

Objeto nulo (None)

A continuación se muestra un ejemplo de un 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.