Vous pouvez configurer l'analyseur de paire clé-valeur (KVP) pour les collecteurs FileLog
et WinLog
.
Analyseur de paire clé-valeur
kvp
recherche toutes les correspondances
key=value
dans un texte de message journal arbitraire et les extrait. L'exemple suivant illustre le format de l'analyseur
kvp
.
[parser|kvp_parser] base_parser=kvp fields=*
Par exemple, le journal clé-valeur peut être au format suivant : scope=local; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0;
Avec l'analyseur kvp
, vous devez spécifier les champs dont les valeurs doivent être extraites. Par exemple, si la définition fields=name,lastname,country
existe dans la configuration, seules les valeurs comportant les clés spécifiées sont analysées et envoyées vers le serveur.
La clé et la valeur peuvent éventuellement être placées entre guillemets (" ") pour définir un espace ou d'autres caractères spéciaux.
Lorsque des guillemets doubles sont utilisés pour la clé ou la valeur, le caractère barre oblique inverse « \ » peut être utilisé comme caractère d'échappement. Tout caractère suivant le caractère barre oblique inverse est défini littéralement, notamment le caractère guillemet double ou le caractère barre oblique inverse. Par exemple : « \\ »
Notez les points suivants :
- Si la paire clé-valeur n'est pas suivie d'un signe égal et que l'extrait de code
VALUE
n'est pas fourni, l'option est ignorée et traitée comme un texte libre. - La clé ne peut pas être vide, mais la valeur peut l'être.
- Si un signe égal n'est suivi d'aucune valeur, il est ignoré et traité comme un texte libre.
- Une valeur peut être une chaîne de caractères encadrés de guillemets ou elle peut être vide. Pour l'échappement de caractères spéciaux faisant partie de la valeur, utilisez une barre oblique inverse.
Options de l'analyseur KVP
Les informations relatives à la structure de l'analyseur kvp
sont les suivantes :
Option | Description |
---|---|
fields |
Informations à extraire décrites comme unités de données. Par exemple, Si des noms de champs spécifiques sont définis par l'option Si l'option |
delimiter |
Cette option est facultative. Les délimiteurs par défaut sont les caractères espace, tabulation, nouvelle ligne, virgule et point-virgule. Si aucun délimiteur n'est spécifié dans la configuration, l'analyseur Pour modifier les délimiteurs par défaut, vous devez définir des délimiteurs spécifiques entre guillemets doubles. Par exemple : Par exemple, l'instruction |
field_decoder |
Les analyseurs imbriqués spécifiés en tant que chaîne JSON, dans laquelle les clés sont les noms des champs auxquels appliquer l'analyseur imbriqué et la valeur est le nom de l'analyseur à utiliser pour ce champ. Chaque analyseur imbriqué est appliqué au champ approprié, tel qu'il est décodé par l'analyseur de base. Les décodeurs de champs sont utiles lorsque la valeur d'une paire clé-valeur est complexe, telle qu'un horodatage ou une liste séparée par des virgules. |
debug = |
Cette option est facultative. La valeur Lorsque cette option est définie sur |
Options de valeurs de clés supplémentaires
Clé | Définition |
---|---|
KVP_MESSAGE = *(MESSAGE_ENTRY [WSPR]) |
Liste d'entrées de messages séparées par un espace facultatif |
MESSAGE_ENTRY = KVP / FREE_TEXT |
Une entrée est une paire clé-valeur ou simplement du texte libre |
KVP = KEY ["=" VALUE] |
Paire clé-valeur. Si KEY n'est pas suivi d'un signe égal et de VALUE, il est ignoré comme un texte libre. |
KEY = BARE_KEY / QUOTED_KEY |
|
FREE_TEXT = "=" |
Un signe égal isolé est considéré comme du texte libre et ignoré. |
BARE_KEY = *1BARE_KEY_CHAR |
Au moins un caractère |
BARE_KEY_CHAR = %0x00-08 / %0x10-19 / %0x21-3C / %3E-%FF |
Tout caractère à l'exclusion du signe égal, du caractère espace ou du caractère tabulation |
QUOTED_KEY = 0x22 *1(QUOTED_STRING_CHAR / "\" CHAR) 0x22 |
Au moins un caractère placé entre guillemets doubles. La barre oblique inverse est utilisée comme caractère d'échappement. |
QUOTED_STRING_CHAR = %0x00-21 / %0x23-FF |
Tout caractère à l'exclusion du guillemet double |
VALUE = BARE_VALUE / QUOTED_VALUE |
|
BARE_VALUE = *BARE_VALUE_CHAR |
Aucun caractère ou plus |
BARE_VALUE_CHAR = %0x00-08 / %0x10-19 / %0x21-FF |
Tout caractère à l'exclusion du caractère espace ou du caractère tabulation |
QUOTED_VALUE = 0x22 *(QUOTED_STRING_CHAR / "\" CHAR) 0x22 |
Chaîne de caractères placés entre guillemets doubles. Elle peut être vide. La barre oblique inverse est utilisée comme caractère d'échappement. |
Exemples de configurations d'analyseur KVP
Si nécessaire, vous pouvez utiliser fields=*
pour analyser tous les champs.
[parser|simple_kvp] base_parser =kvp fields=*
Cet exemple montre comment spécifier le décodeur de champs.
[parser|mykvp] debug=no base_parser=kvp delimiter="#^|" fields=* ;OR fields=scope,abstract,lazyInit,autowireMode,dependencyCheck field_decoder={"field1":"field1_parser1"} [parser|field1_parser1] base_parser=clf format=[%{value1}i]] field_decoder={"value1":"field_parser2"}
Pour analyser le journal KVP suivant :
Configuring transport... proto = cfapi server_hostname = LOCALHOST ssl = no port = 9000 reconnect = 30
[parser|kvp_log_parser] base_parser=kvp fields=*L'analyseur KVP renvoie les champs suivants :
proto=cfapi server_hostname=LOCALHOST ssl=no port=9000 reconnect=30
=
) est précédé d'une clé générée de manière aléatoire, il est recommandé de ne pas utiliser l'analyseur KVP avec l'option
*
, car il génère de nombreux champs aléatoires, ce qui peut entraîner des problèmes de performances de l'interface utilisateur et des requêtes. Vous pouvez utiliser plutôt l'analyseur en spécifiant les champs qui doivent être analysés.
Exemples d'analyseurs KVP simple et complexe
Exemple d'analyseur KVP simple
[filelog|MyLog] directory=C:\<folder_name>\Parser_logs include=*.log parser=my_KVP_parser [parser|my_KVP_parser] base_parser=kvp fields=*
Exemple d'analyseur KVP complexe
[filelog|MyLog] directory=C:\<folder_name>\Parser_logs include=*.log parser=my_KVP_parser [parser|my_KVP_parser] base_parser=kvp fields=* field_decoder={"field1":" field1_parser1"} [parser| field1_parser1] base_parser=clf format=[%{value1}i]] field_decoder={"value1":" field1_parser2"}