Merge pull request #268 from wiibaa/csv

allow custom separator in csv filter
This commit is contained in:
Jordan Sissel 2012-12-21 16:19:58 -08:00
commit 0b8df2688a
2 changed files with 23 additions and 2 deletions

View file

@ -23,12 +23,17 @@ class LogStash::Filters::CSV < LogStash::Filters::Base
# Optional.
config :fields, :validate => :array, :default => []
# Define the column separator value. If this is not specified the default
# is a comma ','
# Optional.
config :separator, :validate => :string, :default => ","
public
def register
@csv = {}
@config.each do |field, dest|
next if (RESERVED + ["fields"]).member?(field)
next if (RESERVED + ["fields", "separator"]).member?(field)
@csv[field] = dest
end
@ -60,7 +65,7 @@ class LogStash::Filters::CSV < LogStash::Filters::Base
raw = event[key].first
begin
values = CSV.parse_line(raw)
values = CSV.parse_line(raw, {:col_sep => @separator})
data = {}
values.each_index do |i|
field_name = @fields[i] || "field#{i+1}"
@ -82,3 +87,4 @@ class LogStash::Filters::CSV < LogStash::Filters::Base
@logger.debug("Event after csv filter", :event => event)
end # def filter
end # class LogStash::Filters::Csv

View file

@ -38,6 +38,21 @@ describe LogStash::Filters::CSV do
end
end
describe "custom separator" do
config <<-CONFIG
filter {
csv {
separator => ";"
}
}
CONFIG
sample "big,bird;sesame street" do
insist { subject["field1"] } == "big,bird"
insist { subject["field2"] } == "sesame street"
end
end
describe "parse csv with more data than defined field names" do
config <<-CONFIG
filter {