Mr T.
Mr T.

Reputation: 4498

logstash - output single event into multiple line output file


I have a jdbc input with a select statement. each row in the restult set has 3 columns. c1, c2, c3. the event emitted has the following structure:

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

I want to output the values in a file in the following manner:

output file:
v1
v2
v3

this is the output configuration:

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

but what is generated is

outputfile:
v1\nv2\nv3

is the plain codec plugin not the one i need? is there any other codec plugin for the output file plugin that i can use? or is the only option i have is to write my own plugin?
Thanks!

Upvotes: 1

Views: 1174

Answers (2)

ba0708
ba0708

Reputation: 10599

A bit late to the party, but maybe this helps others. Although it looks funky, you should be able to get away with simply hitting Enter within the format string (using the line codec).

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

Not the prettiest approach, but it works. Not sure if there is a better way.

Upvotes: 0

Faulander
Faulander

Reputation: 337

what you are looking for is the line codec plugin: https://www.elastic.co/guide/en/logstash/current/plugins-codecs-line.html

Upvotes: -1

Related Questions