Puede configurar el analizador de par de clave/valor (KVP) para recopiladores de FileLog y WinLog.
Analizador de par de clave/valor (KVP)
kvp busca y extrae todas las coincidencias de
key=value de un texto de mensaje de registro arbitrario. El siguiente ejemplo muestra el formato del analizador de
kvp.
[parser|kvp_parser] base_parser=kvp fields=*
Por ejemplo, el registro de clave-valor puede estar en el siguiente formato: scope=local; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0;
Con el analizador de kvp, debe especificar los campos de los que se deben extraer los valores. Por ejemplo, si la definición fields=name,lastname,country existe en la configuración, solo se analizan los valores con las claves especificadas y se envían al servidor.
Opcionalmente, tanto la clave como el valor pueden rodearse por comillas dobles “ “ para definir espacios en blanco u otros caracteres especiales.
Cuando se usan comillas dobles para la clave o el valor, se puede usar una barra invertida “ \ “ como carácter de escape. Cualquier carácter que aparece a continuación de la barra invertida se define literalmente, incluidos los caracteres de comillas dobles o barra invertida. Por ejemplo: “ \\ ”
Tenga en cuenta las siguientes consideraciones.
- Si la clave en un par de clave/valor no está seguida por un signo igual y no se proporciona
VALUE, la opción se omite, al igual que con texto libre. - La clave no puede estar vacía; el valor puede estar vacío.
- Un signo igual no seguido por un valor se trata como texto libre y se omite.
- Un valor puede ser una cadena de caracteres rodeada por caracteres de comillas dobles, o puede estar vacía. Use una barra invertida para escapar caracteres especiales que forman parte del valor.
Opciones del analizador de KVP
Tenga en cuenta la siguiente información sobre la estructura del analizador de kvp.
| Opción | Descripción |
|---|---|
fields |
La información que desea extraer, descrita como unidades de datos. Por ejemplo, Si los nombres de campos específicos se definen mediante la opción Si se especifica la opción |
delimiter |
Opcional. Los delimitadores predeterminados son el carácter de espacio, el carácter de tabulación, los caracteres de líneas nuevas, la coma y los caracteres de punto y coma. Si no se especifican delimitadores en la configuración, el analizador de Para cambiar los delimitadores predeterminados por delimitadores específicos, deberá definirlos entre comillas dobles. Por ejemplo: Por ejemplo, la instrucción |
field_decoder |
Los analizadores anidados se especifican como una cadena JSON en donde las claves son los nombres del campo para aplicar al analizador anidado, y el valor es el nombre del analizador para usar para ese campo. Cada analizador anidado se aplica al campo adecuado, tal como se decodifica por el analizador base. Los decodificadores de campo son útiles cuando el valor de un par clave-valor es un valor complejo, tal como una marca de tiempo y una lista separada por comas. |
debug = |
Opcional. El valor de Cuando se establece la opción en |
Opciones adicionales de clave y valor
| Clave | Definición |
|---|---|
KVP_MESSAGE = *(MESSAGE_ENTRY [WSPR]) |
Una lista de entradas de mensajes separadas por un espacio en blanco opcional |
MESSAGE_ENTRY = KVP / FREE_TEXT |
La entrada es un par de clave/valor o simplemente una cadena de texto libre |
KVP = KEY ["=" VALUE] |
Par de clave/valor. Si la CLAVE no va seguida por un signo igual y VALOR, se omite como una cadena de texto libre. |
KEY = BARE_KEY / QUOTED_KEY |
|
FREE_TEXT = "=" |
Un signo igual libre es considerado como una cadena de texto libre y se omite. |
BARE_KEY = *1BARE_KEY_CHAR |
Al menos un carácter |
BARE_KEY_CHAR = %0x00-08 / %0x10-19 / %0x21-3C / %3E-%FF |
Cualquier carácter, excepto un signo igual, un espacio o un carácter de tabulación |
QUOTED_KEY = 0x22 *1(QUOTED_STRING_CHAR / "\" CHAR) 0x22 |
Al menos un carácter rodeado por caracteres de comillas dobles. La barra invertida se usa como un carácter de escape. |
QUOTED_STRING_CHAR = %0x00-21 / %0x23-FF |
Cualquier carácter, excepto las comillas dobles |
VALUE = BARE_VALUE / QUOTED_VALUE |
|
BARE_VALUE = *BARE_VALUE_CHAR |
Cero o más caracteres |
BARE_VALUE_CHAR = %0x00-08 / %0x10-19 / %0x21-FF |
Cualquier carácter, excepto un espacio o un carácter de tabulación |
QUOTED_VALUE = 0x22 *(QUOTED_STRING_CHAR / "\" CHAR) 0x22 |
Una cadena de caracteres rodeada por caracteres de comillas dobles. Esta cadena puede estar vacía. La barra invertida se usa como un carácter de escape. |
Ejemplos de configuración de analizadores de KVP
Puede usar fields=* para analizar todos los campos, si es necesario.
[parser|simple_kvp] base_parser =kvp fields=*
Este ejemplo muestra como especificar el decodificador de campo.
[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"}
Para analizar el siguiente registro de KVP:
Configuring transport... proto = cfapi server_hostname = LOCALHOST ssl = no port = 9000 reconnect = 30
[parser|kvp_log_parser] base_parser=kvp fields=*El analizador de KVP devuelve los siguientes campos:
proto=cfapi server_hostname=LOCALHOST ssl=no port=9000 reconnect=30
=) está precedido por una clave generada de forma aleatoria, se recomienda no utilizar el analizador de KVP con la opción
*, ya que genera muchos campos aleatorios, lo que puede ocasionar problemas de rendimiento en la interfaz de usuario y en las consultas. En su lugar, puede utilizar el analizador especificando los campos que se deben analizar.
Ejemplos de analizadores de KVP simples y complejos
Ejemplo de analizador de KVP simple
[filelog|MyLog] directory=C:\<folder_name>\Parser_logs include=*.log parser=my_KVP_parser [parser|my_KVP_parser] base_parser=kvp fields=*
Ejemplo de analizador de KVP complejo
[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"}