Tous les produits
Search
Centre de documentation

Simple Log Service:Syntaxe de base

Dernière mise à jour :Sep 12, 2026

Cette rubrique décrit la syntaxe de base du langage DSL (Domain-Specific Language) de Log Service (SLS).

Commentaires

Pour ajouter un commentaire expliquant la syntaxe, commencez la ligne par un dièse (#). L'exemple de code suivant illustre cette pratique :

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

Sauts de ligne

Si la liste des paramètres d'un appel de fonction est trop longue, insérez un saut de ligne.

  • Si la structure de la fonction contient une virgule (,), ajoutez directement le saut de ligne après celle-ci.

  • Si une chaîne de caractères est trop longue et nécessite un saut de ligne, utilisez une barre oblique inverse (\).

Exemple :

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éthodes d'appel de fonctions

  • Appel de base

    e_set("abc", "xyz")
    Remarque

    Lorsque vous rédigez une instruction de transformation de données, les types de données et le nombre de paramètres d'entrée doivent correspondre à la syntaxe de la fonction.

  • Appel avec paramètres variables de base

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

    Si les paramètres d'une fonction incluent des crochets ([]), les paramètres situés entre ces crochets, tels que new et count, sont facultatifs. Vous ne pouvez pas les appeler en tant que paramètres nommés et devez respecter l'ordre spécifié.

    # 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)
  • Appel avec paramètres nommés

    Un paramètre doté d'une valeur par défaut est un paramètre nommé. Par exemple, mode dans e_set("abc", "xyz", mode="fill") est un paramètre nommé.

    • Pour certaines fonctions, vous devez transmettre des valeurs aux paramètres nommés dans des conditions spécifiques. Pour plus d'informations, consultez la description des paramètres de chaque fonction.

    • Pour transmettre une valeur à un paramètre nommé, utilisez le format suivant : mode=....

    • En présence de plusieurs paramètres nommés, l'ordre dans lequel vous les spécifiez n'a pas d'importance. Par exemple, e_csv("data", ["f1", "f2", "f3"], sep='#', quote="|") équivaut à e_csv("data", ["f1", "f2", "f3"], quote="|", sep='#').

    Remarque

    Dans un appel de fonction, les paramètres nommés doivent toujours être spécifiés après les paramètres non nommés.

  • Appels de fonctions imbriqués

    Utilisez la valeur de retour d'une fonction comme paramètre dans une autre fonction. Assurez-vous que les types de données sont cohérents. Exemple :

    e_set("abc", v("xyz"))
    e_set("abc", str_lower(v("xyz")))
  • Paramètres variables

    Certaines fonctions prennent en charge les paramètres variables. v("f1", ....) indique que vous pouvez transmettre davantage de paramètres, tels que v("f1", "f2", "f3").

    Lorsque vous transmettez des paramètres nommés, placez-les à la fin. Par exemple : v("f1", "f2", "f3", "f4", mode="fill").

Opérateurs

  • Opérateurs de comparaison

    Le mode standard du DSL SLS prend en charge les opérateurs de comparaison, notamment >, <, >=, <=, !=, and ==. Vous pouvez également utiliser les fonctions de comparaison fournies par SLS pour obtenir le même effet.

    • Utilisation directe des opérateurs de comparaison

      # 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.
    • Utilisation des fonctions de comparaison fournies par SLS

      Opération

      Fonction

      Exemple

      Égal à ==

      op_eq

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

      Différent de !=

      op_ne

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

      Supérieur à >

      op_gt

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

      Supérieur ou égal à >=

      op_ge

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

      Inférieur à <

      op_lt

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

      Inférieur ou égal à <=

      op_le

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

  • Opérateurs logiques

    Le mode standard du DSL SLS prend en charge les opérateurs logiques, notamment AND, OR et NOT. Vous pouvez également utiliser les fonctions logiques fournies par SLS pour obtenir le même effet.

    • Utilisation directe des opérateurs logiques

      # 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.
    • Utilisation des fonctions logiques fournies par SLS

      Opération

      Fonction

      Exemple

      ET logique and

      op_and

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

      OU logique or

      op_or

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

      NON logique not

      op_not

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

  • Autres opérateurs

    Les opérateurs suivants ne sont pas directement pris en charge dans le mode standard du DSL SLS. SLS fournit des fonctions correspondantes pour obtenir les mêmes effets.

    Opérations contextuelles

    Fonction

    Exemple

    Addition +

    op_add

    op_add(v("age"), 2)

    Soustraction -

    op_sub

    op_sub(v("age"), 2)

    Multiplication *

    op_mul

    op_mul(v("size"), 2)

    Exponentiation **

    op_pow

    op_pow(v("size"), 2)

    Division entière //

    op_div_floor

    op_div_floor(v("bytes"), 1024)

    Modulo %

    op_mod

    op_mod(v("age"), 10)

    Négation -

    op_neg

    op_neg(v("profit"))

    Vérification d'existence in

    op_in

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

    Vérification de non-existence not in

    op_not_in

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

    Découpage de chaîne [ ...]

    op_slice

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

    Par exemple, pour définir la valeur du champ a sur 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

Évaluation des valeurs vraies et fausses

Certaines fonctions acceptent une condition et déterminent la logique suivante en fonction de la valeur de cette condition. La condition peut être un champ statique ou la valeur de retour d'une expression.

Le DSL SLS prend en charge l'évaluation de tout type de données. Le tableau suivant décrit les conditions pour les valeurs vraies et fausses selon les différents types de données.

Type de données

Condition pour Vrai

Condition pour Faux

Booléen

True, true

False, false

None

None

Toujours faux

Numérique

Différent de 0 ou 0,0

0 ou 0,0

Chaîne

Non vide

Chaîne vide

Octets

Non vide

Octets vides

Tuple

Non vide

Tuple vide

Liste

Non vide

Liste vide

Dictionnaire

Non vide

Dictionnaire vide

Table

Vrai s'il existe

Objet nul (None)

Datetime

Vrai s'il existe

Objet nul (None)

Voici un exemple d'événement supprimé :

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.