Sie können den Parser für das Schlüssel/Wert-Paar (Key/Value Pair Parser, KVP) sowohl für FileLog
- als auch für WinLog
-Collectors konfigurieren.
Schlüssel/Wert-Paar-Parser (KVP-Parser)
kvp
-Parser finden und extrahieren alle
key=value
-Übereinstimmungen in einem beliebigen Protokollnachrichtentext. Im folgenden Beispiel wird das
kvp
-Parser-Format dargestellt.
[parser|kvp_parser] base_parser=kvp fields=*
Beispielsweise kann das Schlüsselwertprotokoll folgendes Format aufweisen: scope=local; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0;
Für den kvp
-Parser müssen Sie die Felder angeben, aus denen die Werte extrahiert werden sollen. Wenn z. B. die Definition fields=name,lastname,country
in der Konfiguration vorhanden ist, werden nur die Werte mit den angegebenen Schlüsseln analysiert und an den Server gesandt.
Sowohl der Schlüssel als auch der Wert kann optional von doppelten Anführungszeichen (" ") eingeschlossen sein, um ein Leerzeichen oder andere Sonderzeichen zu definieren.
Wenn doppelte Anführungszeichen für den Schlüssel oder den Wert verwendet werden, kann der umgekehrte Schrägstrich (\) als Escape-Zeichen verwendet werden. Jedes auf einen umgekehrten Schrägstrich folgende Zeichen ist wörtlich definiert, einschließlich eines doppelten Anführungszeichens oder eines umgekehrten Schrägstrichs. Beispiel: " \\ "
Beachten Sie die folgenden Überlegungen.
- Wenn dem Schlüssel in einem Schlüssel/Wert-Paar kein Ist-gleich-Zeichen folgt und kein
VALUE
angegeben ist, wird die Option wie im Fall von Freitext übersprungen. - Der Schlüssel darf nicht leer sein, der Wert darf jedoch leer sein.
- Ein Gleichheitszeichen, dem kein Wert folgt, wird als Freitext behandelt und übersprungen.
- Ein Wert kann eine von doppelten Anführungszeichen umgebene Zeichenfolge oder leer sein. Verwenden Sie einen umgekehrten Schrägstrich als Escape-Zeichen für Sonderzeichen, die zum Wert gehören.
Optionen für den KVP-Parser
Beachten Sie die folgenden Informationen hinsichtlich der Struktur des kvp
-Parsers.
Option | Beschreibung |
---|---|
fields |
Die zu extrahierenden Informationen, als Dateneinheiten beschrieben. Beispielsweise Wenn bestimmte Feldnamen durch die Option Wenn die Option |
delimiter |
Optional. Standardtrennzeichen sind Leerzeichen, Tabstopp, Zeilenumbruchzeichen, Komma und Semikolon. Wenn in der Konfiguration keine Trennzeichen angegeben sind, verwendet der Um Standardtrennzeichen in bestimmte Trennzeichen zu ändern, müssen Sie diese zwischen doppelten Anführungszeichen definieren. Beispiel: Die |
field_decoder |
Verschachtelte Parser werden als JSON-Zeichenfolge angegeben, in der die Schlüssel die Namen des Felds sind, auf das der verschachtelte Parser angewendet wird. Der Wert ist der Name des Parsers, der für das betreffende Feld verwendet wird. Jeder verschachtelte Parser wird entsprechend der Decodierung durch den Basis-Parser auf das zutreffende Feld angewandt. Felddecodierer sind nützlich, wenn es sich beim Wert eines Schlüssel/Wert-Paars um einen komplexen Wert wie ein Zeitstempel oder eine kommagetrennte Liste handelt. |
debug = |
Optional. Der Wenn die Option auf |
Zusätzliche Optionen für Schlüsselwerte
Schlüssel | Definition |
---|---|
KVP_MESSAGE = *(MESSAGE_ENTRY [WSPR]) |
Eine Liste mit Nachrichteneinträgen, optional getrennt durch Leerzeichen |
MESSAGE_ENTRY = KVP / FREE_TEXT |
Ein Eintrag ist ein Schlüssel/Wert-Paar oder nur ein Freitext |
KVP = KEY ["=" VALUE] |
Schlüssel/Wert-Paar. Wenn auf KEY kein Gleichheitszeichen und VALUE folgen, wird er wie Freitext übersprungen. |
KEY = BARE_KEY / QUOTED_KEY |
|
FREE_TEXT = "=" |
Ein frei stehendes Gleichheitszeichen wird als Freitext betrachtet und übersprungen. |
BARE_KEY = *1BARE_KEY_CHAR |
Mindestens ein Zeichen |
BARE_KEY_CHAR = %0x00-08 / %0x10-19 / %0x21-3C / %3E-%FF |
Ein beliebiges Zeichen mit Ausnahme von Gleichheitszeichen, Leerzeichen oder Tabstopp |
QUOTED_KEY = 0x22 *1(QUOTED_STRING_CHAR / "\" CHAR) 0x22 |
Mindestens ein in doppelten Anführungszeichen eingeschlossenes Zeichen. Der umgekehrte Schrägstrich wird als Escape-Zeichen verwendet. |
QUOTED_STRING_CHAR = %0x00-21 / %0x23-FF |
Jedes Zeichen mit Ausnahme von doppelten Anführungszeichen |
VALUE = BARE_VALUE / QUOTED_VALUE |
|
BARE_VALUE = *BARE_VALUE_CHAR |
Null oder mehr Zeichen |
BARE_VALUE_CHAR = %0x00-08 / %0x10-19 / %0x21-FF |
Ein beliebiges Zeichen mit Ausnahme von Leerzeichen oder Tabstopp |
QUOTED_VALUE = 0x22 *(QUOTED_STRING_CHAR / "\" CHAR) 0x22 |
Eine in doppelten Anführungszeichen eingeschlossene Zeichenfolge. Darf leer sein. Der umgekehrte Schrägstrich wird als Escape-Zeichen verwendet. |
Beispiele für die Konfiguration von KVP-Parsern
Falls erforderlich, können Sie fields=*
zum Analysieren aller Felder verwenden.
[parser|simple_kvp] base_parser =kvp fields=*
In diesem Beispiel wird dargestellt, wie der Felddecodierer angegeben wird.
[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"}
So analysieren Sie das folgende KVP-Protokoll:
Configuring transport... proto = cfapi server_hostname = LOCALHOST ssl = no port = 9000 reconnect = 30
[parser|kvp_log_parser] base_parser=kvp fields=*Der KVP-Parser gibt folgende Felder zurück:
proto=cfapi server_hostname=LOCALHOST ssl=no port=9000 reconnect=30
=
) ein zufällig erzeugter Schlüssel vorangestellt wird, sollte der KVP-Parser nicht mit der Option
*
verwendet werden, da er viele Zufallsfelder erzeugt, was zu Problemen mit der Benutzeroberfläche und der Abfrageleistung führen kann. Stattdessen können Sie den Parser verwenden, indem Sie die zu analysierenden Felder angeben.
Beispiele für einfache und komplexe KVP-Parser
Beispiel für einen einfachen KVP-Parser
[filelog|MyLog] directory=C:\<folder_name>\Parser_logs include=*.log parser=my_KVP_parser [parser|my_KVP_parser] base_parser=kvp fields=*
Beispiel für einen komplexen KVP-Parser
[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"}