您可以為 FileLog
和 WinLog
收集器設定索引鍵/值配對 (KVP) 剖析器。
索引鍵/值配對 (KVP) 剖析器
kvp
剖析器會從任意記錄訊息文字尋找並擷取所有
key=value
相符項。下列範例顯示
kvp
剖析器格式。
[parser|kvp_parser] base_parser=kvp fields=*
例如,索引鍵-值記錄可以採用下列格式:scope=local; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0;
若使用 kvp
剖析器,您必須指定要從中擷取值的欄位。例如,如果組態中存在定義 fields=name,lastname,country
,僅具有指定索引鍵的值會進行剖析並傳送至伺服器。
索引鍵和值都可以選擇性地以雙引號 “ “ 括住,以定義空格或其他特殊字元。
針對索引鍵或值使用雙引號時,可以將反斜線字元「\」用作逸出字元。反斜線字元後面的任何字元都是照字面定義的,包括雙引號字元或反斜線字元。例如:“ \\ ”
請注意下列考量事項。
- 如果索引鍵/值配對中的索引鍵後面未跟隨等號且未提供
VALUE
,即如同任意文字,將略過此選項。 - 索引鍵不可為空白,值可以空白。
- 後面未跟隨值的等號會視為任意文字,將會被略過。
- 值可以是雙引號字元括住的字元字串,也可以是空的。使用反斜線逸出值中的特殊字元。
KVP 剖析器選項
請注意下列關於 kvp
剖析器結構的資訊。
選項 | 說明 |
---|---|
fields |
您要擷取的資訊以資料單位形式說明。例如, 如果以 如果將 |
delimiter |
選擇性。 預設分隔符號包括空格字元、Tab、新行字元、逗點和分號字元。 如果組態中未指定任何分隔符號, 若要將預設分隔符號變更為特定分隔符號,您必須在兩個雙引號之間進行定義。例如: 例如, |
field_decoder |
巢狀剖析器指定為 JSON 字串,其中索引鍵是套用至巢狀剖析器之欄位的名稱,值是用於此欄位之剖析器的名稱。 每個巢狀剖析器會套用至基礎剖析器解碼的適當欄位。 當索引鍵-值配對為複雜值 (例如時間戳記或以逗點分隔的清單) 時,欄位解碼器非常有用。 |
debug = |
選擇性。 當選項設定為 |
其他索引鍵值選項
索引鍵 | 定義 |
---|---|
KVP_MESSAGE = *(MESSAGE_ENTRY [WSPR]) |
以選擇性空格分隔的訊息項目清單 |
MESSAGE_ENTRY = KVP / FREE_TEXT |
項目為索引鍵/值配對或僅為任意文字 |
KVP = KEY ["=" VALUE] |
索引鍵/值配對。如果 KEY 後面未跟隨等號和 VALUE,則會將其視為任意文字加以略過。 |
KEY = BARE_KEY / QUOTED_KEY |
|
FREE_TEXT = "=" |
獨立的等號會被視為任意文字且會略過。 |
BARE_KEY = *1BARE_KEY_CHAR |
至少一個字元 |
BARE_KEY_CHAR = %0x00-08 / %0x10-19 / %0x21-3C / %3E-%FF |
除等號、空格或 TAB 之外的任何字元 |
QUOTED_KEY = 0x22 *1(QUOTED_STRING_CHAR / "\" CHAR) 0x22 |
至少一個以雙引號字元括住的字元。將反斜線用作逸出字元。 |
QUOTED_STRING_CHAR = %0x00-21 / %0x23-FF |
除雙引號之外的任何字元 |
VALUE = BARE_VALUE / QUOTED_VALUE |
|
BARE_VALUE = *BARE_VALUE_CHAR |
零或多個字元 |
BARE_VALUE_CHAR = %0x00-08 / %0x10-19 / %0x21-FF |
除空格或 TAB 之外的任何字元 |
QUOTED_VALUE = 0x22 *(QUOTED_STRING_CHAR / "\" CHAR) 0x22 |
以雙引號字元括住的字元字串。這可以為空白。將反斜線用作逸出字元。 |
KVP 剖析器組態範例
您可以視需要使用 fields=*
剖析所有欄位。
[parser|simple_kvp] base_parser =kvp fields=*
此範例顯示如何指定欄位解碼器。
[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"}
剖析以下 KVP 記錄:
Configuring transport... proto = cfapi server_hostname = LOCALHOST ssl = no port = 9000 reconnect = 30
[parser|kvp_log_parser] base_parser=kvp fields=*KVP 剖析器會傳回以下欄位:
proto=cfapi server_hostname=LOCALHOST ssl=no port=9000 reconnect=30
=
) 前面有一個隨機產生的索引鍵時,最佳做法是不使用包含
*
選項的 KVP 剖析器,因為它會產生許多隨機欄位,這可能導致 UI 和查詢效能問題。您可以改為指定需要剖析的欄位來使用剖析器。
簡單和複雜的 KVP 剖析器範例
簡單的 KVP 剖析器範例
[filelog|MyLog] directory=C:\<folder_name>\Parser_logs include=*.log parser=my_KVP_parser [parser|my_KVP_parser] base_parser=kvp fields=*
複雜的 KVP 剖析器範例
[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"}