rsyslog / liblognorm

a fast samples-based log normalization library
http://www.liblognorm.com
GNU Lesser General Public License v2.1
99 stars 64 forks source link

NameValueList new parameter : ignore_whitespaces #358

Open KGuillemot opened 2 years ago

KGuillemot commented 2 years ago

Description

I propose to add a new option to the "name-value-list" object for liblognorm V2 : ignore_whitespaces The purpose of this option is to ignore spaces at the beginning and the end of keys and values. Default behavior is not affected.

Old behavior

Historically, every caracters, even spaces, that are before and after separator and assignator are captured by name-value-list type. For example : Using the following rule :

version=2
rule=:%{"name":".", "type":"name-value-list", "separator":",", "assignator":":"}%

the following string : a: b, c: d will give the following result :

{"a":" b", " c":" d"}

Note the presence of spaces in front of the value " b" and the key " c". This can lead to issues when we want to use those variables afterwards.

New behavior

With the use of ignore_whitespaces option, all spaces around keys and values will be trimmed. For example : Using the following rule :

version=2
rule=:%{"name":".", "type":"name-value-list", "separator":",", "assignator":":", "ignore_whitespaces":true}%

the following string : a: b, c: d will give the following result :

{"a":"b", "c":"d"}

Good to know

Default and historic behavior does not change. This is a new option. Spaces are not trimmed for quoted keys and values.

KGuillemot commented 2 years ago

Hello, Some tests were not successful, but it seems to be an issue with the docker environment. Regards, Kévin