将单个事件输出到多行输出文件中




我有一个带有select语句的jdbc输入。restult集中的每一行都有3列。c1c2c3。发出的事件具有以下结构:

{"c1":"v1", "c2":"v2", "c3":"v3", "file_name":"tmp.csv"}

我想以以下方式输出文件中的值:

output file:
v1
v2
v3

这是输出配置:

file {
path => "/tmp/%{file_name}"
codec => plain { format => "%{c1}n%{c2}n%{c3}"  }
write_behavior => "overwrite"
flush_interval => 0
}

但是生成的是

outputfile:
v1nv2nv3

普通的编解码器插件不是我需要的吗?我可以使用输出文件插件的其他编解码器插件吗?还是我唯一的选择就是编写自己的插件
谢谢!

聚会迟到了一点,但这可能会对其他人有所帮助。尽管它看起来很时髦,但您应该可以简单地在格式字符串中点击Enter(使用line编解码器(。

file {
path => "/tmp/%{file_name}"
codec => line {
format => "%{c1}
%{c2}
%{c3}"
}
write_behavior => "overwrite"
flush_interval => 0
}

这不是最漂亮的方法,但它有效。不确定是否有更好的方法。

您正在寻找的是线路编解码器插件:https://www.elastic.co/guide/en/logstash/current/plugins-codecs-line.html

最新更新