Puede configurar el analizador de par de clave/valor (KVP) para recopiladores de FileLog y WinLog.

Analizador de par de clave/valor (KVP)

El analizador de 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, fields=name,lastname,country.

Si los nombres de campos específicos se definen mediante la opción fields, cada carácter no válido en el nombre de un campo extraído de un registro se reemplaza con un guion bajo. Por ejemplo, si la opción fields busca los campos "x-A" y "a*(X+Y)", el analizador extrae estos campos de los registros y les asigna los nombres "x_a" y "a__x_y", respectivamente. Esto permite extraer campos que contengan cualquier carácter en el nombre.

Si se especifica la opción fields como "*", el analizador de kvp reconoce pares campo/valor automáticamente. Por tanto, busca campos que tengan solo caracteres "alfanuméricos + guion bajo" (compatibles con el servidor de LI). En lugar de convertir el resto de caracteres no válidos en guiones bajos, estos se eliminan. De esta forma, se impide que el analizador extraiga información innecesaria y la aplique a los campos estáticos.

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 kvp usa los predeterminados para el análisis.

Para cambiar los delimitadores predeterminados por delimitadores específicos, deberá definirlos entre comillas dobles. Por ejemplo: delimiter = "#^|". Esta definición implica que cada uno de los caracteres entre comillas dobles se usa como delimitador. El analizador de kvp puede considerar cada carácter como delimitador. Puede incluir los delimitadores predeterminados junto con otros en la definición.

Por ejemplo, la instrucción delimiter = "#^|\t\r\n\s" incluye el carácter de tabulación, los caracteres de líneas nuevas y el espacio como delimitadores. Si se usan estos caracteres, deben estar precedidos por el carácter de escape. Por ejemplo, para definir el carácter de espacio como delimitador, introduzca el carácter de escape " \" antes del carácter de espacio al definirlo como delimitador (por ejemplo, delimiter="\s").

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 debug = puede ser yes o no. El valor predeterminado para la depuración es debug=no para analizadores.

Cuando se establece la opción en yes, puede ver registros detallados del consumo del analizador en liagent_<date>.log.

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
Defina la configuración del analizador de KVP:
[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
Nota: En los registros de entrada, cuando un operador de asignación ( =) 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"}