Présentation

La formule (ou expression) définit la valeur du champ calculé pour chaque événement de log. Vous pouvez référencer des attributs de log, d’autres champs calculés, ainsi que des fonctions et opérateurs pris en charge. Lorsque vous rédigez ou modifiez une formule, l’éditeur suggère automatiquement les champs, fonctions et opérateurs pertinents.

Syntaxe de base et constructions linguistiques

ConstructionSyntaxe et notation
Attribut ou tag réservé nommé tagtag (aucun préfixe requis)
Pour les tags contenant des tirets, échappez-les avec une barre oblique inverse.
Exemple : ci\-job\-id
Attribut nommé attr@attr (utilisez un préfixe @)
Champ calculé nommé field#field (utilisez un préfixe #)
Littéral de chaîne (guillemet)
Par exemple, text ou Quoted "text".
"text"
"Quoted \"text\""
(La syntaxe de recherche de Log s’applique)
Littéral numérique (nombre)
Par exemple, ten.
10
Fonction nommée func avec les paramètres x et yfunc(x, y)
Opérateur
Par exemple, un opérateur binaire * avec les opérandes x et y.
x*y

Opérateurs

Les opérateurs disponibles par ordre de préséance :

OpérateurDescription
()Un regroupement ou un appel de fonction
!, NOT, -Une négation logique ou arithmétique
^, %Exponentiation, modulo
*, /Multiplication, division
+, -Addition, soustraction
<, <=, >, >=Inférieur à, inférieur ou égal à, supérieur à, supérieur ou égal à
==, !=Correspond, ne correspond pas
&&, ANDAND logique
||, OROU logique

Fonctions

Les fonctions disponibles sont classées comme suit :

Arithmétique

abs(valeur num)

Renvoie la valeur absolue d’un nombre.

ExempleFormuleRésultat
Un événement de log possède les attributs suivants :
- @client_latency = 2
- @server_latency = 3
#discrepancy = abs(@client_latency - @server_latency)#discrepancy = 1

ceil(valeur num)

Arrondit le nombre à l’entier supérieur le plus proche.

ExempleFormuleRésultat
Un événement de log possède l’attribut suivant :
@value = 2,2
#rounded_up = ceil(@value)#rounded_up = 3

floor(valeur num)

Arrondit un nombre à l’entier inférieur le plus proche.

ExempleFormuleRésultat
Un événement de log possède l’attribut suivant :
@value = 9,99
#rounded_down = floor(@value)#rounded_down = 9

max(valeur num, [ valeur num, …])

Trouve la valeur maximale parmi un ensemble de nombres.

ExempleFormuleRésultat
Un événement de log possède l’attribut suivant :
@CPU_temperatures = [-1, 1, 5, 5]
#highest_temp = max(@CPU_temperatures)#highest_temp = 5

min(valeur num, [valeur num, …])

Trouve la valeur minimale parmi un ensemble de nombres.

ExempleFormuleRésultat
Un événement de log possède l’attribut suivant :
@CPU_temperatures = [-1, 1, 5, 5]
#lowest_temp = min(@CPU_temperatures)#lowest_temp = -1

round(valeur num, précision int)

Arrondit un nombre. Définissez éventuellement le nombre de décimales à conserver.

ExempleFormuleRésultat
Un événement de log possède l’attribut suivant :
@value = -1234,01
#rounded_to_tens = round(@value, -1)#rounded_to_tens = -1230

Chaîne

concat(chaîne str [chaîne str, valeur expr, …])

Combine plusieurs valeurs en une seule chaîne.

ExempleFormuleRésultat
Un événement de log possède les attributs suivants :
- @city = « Paris »
- @country = « France »
#region = concat(@city, ", ", @country)#region = « Paris, France »

lower(chaîne str)

Convertit une chaîne en minuscules.

ExempleFormuleRésultat
Un événement de log possède l’attribut suivant :
@first_name = « Bob »
#lower_name = lower(@first_name)#lower_name = « bob »

left(chaîne str, nb_caractères int)

Extrait une partie du texte depuis le début d’une chaîne.

ExempleFormuleRésultat
Un événement de log possède l’attribut suivant :
@price = “USD10.50”
#currency = left(@price, 3)#currency = “USD”

proper(chaîne str)

Convertit la chaîne en casse appropriée.

ExempleFormuleRésultat
Un événement de log possède l’attribut suivant :
@address = « 123 main st »
#formatted_address = proper(@address)#formatted_address = « 123 Main St »

split_before(chaîne str, séparateur str, occurrence int)

Extrait la partie du texte précédant un certain motif dans une chaîne.

ExempleFormuleRésultat
Un événement de log possède l'attribut suivant :
@url = \"www.example.com/path/to/split\"
#url_extraction = split_before(@url, "/", 1)#url_extraction = \"www.example.com/path\"
#url_extraction = split_before(@url, "/", 2)#url_extraction = \"www.example.com/path/to\"

split_after(chaîne str, séparateur str, occurrence int)

Extrait la partie du texte suivant un certain motif dans une chaîne.

ExempleFormuleRésultat
Un événement de log possède l'attribut suivant :
@url = \"www.example.com/path/to/split\"
#url_extraction = split_after(@url, "/", 0)#url_extraction = \"path/to/split\"
#url_extraction = split_after(@url, "/", 1)#url_extraction = \"to/split\"

substring(chaîne str, début int, longueur int)

Extrait une partie de texte du milieu d’une chaîne.

ExempleFormuleRésultat
Un événement de log possède l’attribut suivant :
@price = « USD10.50 »
#dollar_value = substring(@price, 2, 2)#dollar_value = « 10 »

right(chaîne str, nb_caractères int)

Extrait une partie de texte de la fin d’une chaîne.

ExempleFormuleRésultat
Un événement de log possède l’attribut suivant :
@price = « USD10.50 »
#cent_value = right(@price, 2)#cent_value = « 50 »

textjoin(délimiteur str, ignorer_vide bool, chaîne str [chaîne str, valeur expr, …])

Combine plusieurs valeurs en une seule chaîne avec un délimiteur entre elles.

ExempleFormuleRésultat
Un événement de log possède les attributs suivants :
- @city = « Paris »
- @country = « France »
#region = textjoin(", ", "false", @city, @country)#region = « Paris, France »

upper(chaîne str)

Convertit la chaîne de caractères en majuscules.

ExempleFormuleRésultat
Un événement de log possède l’attribut suivant : @first_name = "Bob"#upper_name = upper(@first_name)#upper_name = "BOB"

Logique

if(condition expr, si_vrai expr, si_faux expr)

Évalue une condition et renvoie une valeur en conséquence.

ExempleFormuleRésultat
Un événement de log possède les attributs suivants :
- @location = "Paris, France"
- @home = "New York, USA"
#abroad = if(@location == @home, "false", "true")#abroad = "true"

is_null(valeur expr)

Vérifie si un attribut ou une expression est nul.

ExempleFormuleRésultat
Un événement de log possède les attributs suivants :
- @users_online = 5
- @max_capacity = 0
is_null(@users_online / @max_capacity)"true"

Regex

Les fonctions Regex correspondent ou transforment une valeur à l’aide d’une expression régulière (regex). Les motifs prennent en charge les mêmes constructions regex que regex extraction, telles que les littéraux, les classes de caractères et les quantificateurs. Les mêmes conseils sur le pattern performance s’appliquent. Contrairement à l’extraction, les groupes de capture dans les modèles de formule n’ont pas besoin de nom.

Les arguments de formule sont des chaînes littérales entre guillemets doubles, donc une barre oblique inverse littérale doit être écrite sous la forme de deux barres obliques inverses. Par exemple, pour faire correspondre la classe abrégée de chiffres, écrivez "\\d" dans le modèle. La même règle s'applique à la chaîne de remplacement : pour insérer un signe dollar littéral plutôt qu'une référence de groupe, écrivez "\\$".

regexp_like(valeur str, motif str)

Renvoie true si le motif correspond n’importe où dans la valeur, et false sinon.

ExempleFormuleRésultat
Un événement de log possède l’attribut suivant :
message = “connection timeout after 30s”
#is_timeout = regexp_like(message, "timeout|deadline exceeded")#is_timeout = “true”

regexp_replace(entrée str, motif str, remplacement str, [début int, N int])

Renvoie input avec le texte correspondant remplacé. Utilisez $1 à $9 dans replacement pour insérer la correspondance d’un groupe de capture, ou ${name} pour un groupe nommé.

ArgumentSignification
inputLe texte à transformer
patternLe motif regex devant correspondre
replacementLe motif de transformation regex, utilisant souvent des groupes de capture
startOptionnel. L’indice du caractère (en base zéro) à partir duquel commencer la recherche de correspondance. Par défaut à 0
NOptionnel. Le nombre maximal de correspondances à remplacer. Par défaut à 1. 0 remplace chaque correspondance
ExempleFormuleRésultat
Un événement de log possède l’attribut suivant :
@path = "/api/v1/orders"
#resource = regexp_replace(@path, "^/api/v[0-9]+/(.*)$", "$1")#resource = "orders"

Pour aller plus loin

Documentation, liens et articles supplémentaires utiles: