问题描述
我有一个特殊的要求,即我要根据GROK模式提取一个字段。根据属性的长度,我必须在字符串的末尾添加space
。
例如:
属性:
PartA: test
PartB: abc
输出应类似于:
test#####abc##
需求中partA
的长度应为10
,而partB
的长度应为5
。因此,如果您看到了,我会根据属性的当前长度添加额外的空间(#
。
我目前正在尝试根据上述要求创建一个新行,
这是尝试(logstash.conf):
file {
path => "/Users/Smit/Downloads/chrome/observability/logstash_dump.txt"
codec => line { format => "%{PartA}#####${PartB}###"}
}
}
有没有一种方法可以动态附加空间(#
是为了清楚起见)而不是硬编码。
这是完整的Logstash文件:https://dpaste.org/dsuH
解决方法
参数
part_a = "test"
part_b = "abc"
输出
{ format: part_a.ljust(10) + part_b.ljust(5) }
=> {:format=>"test abc "}
如果传递给ljust
的整数大于字符串的长度,则它将返回该整数长度的新字符串。附加字符默认为空格,但是您可以将第二个参数传递给将第二个参数附加到字符串的方法。如果字符串长于整数,它将不删节。