FileLog
および WinLog
の両方のコレクタに対応するようにキー/値ペア (KVP) パーサを構成できます。
キー/値ペア (KVP) パーサ
kvp
パーサを使用すると、任意のログ メッセージ テキストからすべての
key=value
の一致を検索して抽出することができます。次に、
kvp
パーサのフォーマットの例を示します。
[parser|kvp_parser] base_parser=kvp fields=*
たとえば、key-value ログには次の形式があります:scope=local; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0;
kvp
パーサでは、値を抽出するフィールドを指定する必要があります。たとえば、構成に fields=name,lastname,country
という定義がある場合、指定されたキーを持つ値のみが解析され、サーバに送信されます。
スペースやその他の特殊文字を定義するには、キーと値の両方を二重引用符 (" ") で任意に囲むことができます。
キーまたは値に二重引用符を使用した場合は、バックスラッシュ文字 (\) をエスケープ文字として使用できます。バックスラッシュに続く文字はすべて、二重引用符文字やバックスラッシュ文字も含め、リテラルに定義されます。たとえば、“ \\ ” のようにします。
以下の検討事項に注意してください。
- 等号の後にキー/値ペアのキーがなく、
VALUE
が指定されていない場合、オプションはフリー テキスト フィールドと同様にスキップされます。 - キーは空白にできませんが、値は空白にできます。
- 等号の後に値がない場合はフリー テキストと見なされ、スキップされます。
- 値は二重引用符で囲んで文字列にすることも、空にすることもできます。バックスラッシュを使用して、値の一部の特殊文字をエスケープ処理します。
KVP パーサのオプション
kvp
パーサの構造については、以下の情報に注意してください。
オプション | 説明 |
---|---|
fields |
データの単位として記述された、抽出対象の情報です。たとえば、 特定のフィールド名が
|
delimiter |
任意。 デフォルトの区切り文字はスペース、タブ、改行文字、カンマ、セミコロンです。 区切り文字が指定されていない場合、 デフォルトの区切り文字を特定の区切り文字に変更するには、その区切り文字を二重引用符で囲んで定義する必要があります。たとえば、 たとえば、 |
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 |
少なくとも 1 文字です。 |
BARE_KEY_CHAR = %0x00-08 / %0x10-19 / %0x21-3C / %3E-%FF |
等記号、スペース、または TAB を除く任意の文字です。 |
QUOTED_KEY = 0x22 *1(QUOTED_STRING_CHAR / "\" CHAR) 0x22 |
二重引用符で囲まれた少なくとも 1 文字です。エスケープ文字としてバックスラッシュが使用されます。 |
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 |
スペースまたはタブを除いた任意の文字です。 |
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 パーサを
*
オプションとともに使用しないことをお勧めします。KVP パーサは多数のランダム フィールドを生成するため、UI とクエリのパフォーマンスの問題につながるおそれがあるからです。代わりに、解析する必要があるフィールドを指定して、パーサを使用できます。
単純な KVP パーサと複雑な 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"}