您可以为 FileLog
和 WinLog
收集器配置键/值对 (Key/Value Pair, 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 |
可选。 默认分隔符包括空格字符、制表符、换行符、逗号和分号字符。 如果在配置中未指定任何分隔符, 要将默认分隔符更改为特定分隔符,您必须用双引号将特定分隔符括起来进行定义。例如: 例如, |
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 |
除等号、空格或制表符之外的任何字符 |
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 |
除空格或制表符之外的任何字符 |
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"}