class LogStash::Filters::CSV
CSV
filter. Takes an event field containing CSV
data, parses it, and stores it as individual fields (can optionally specify the names).
Public Instance Methods
filter(event)
click to toggle source
# File lib/logstash/filters/csv.rb, line 45 def filter(event) return unless filter?(event) @logger.debug("Running csv filter", :event => event) matches = 0 if event[@source] if event[@source].is_a?(String) event[@source] = [event[@source]] end if event[@source].length > 1 @logger.warn("csv filter only works on fields of length 1", :source => @source, :value => event[@source], :event => event) return end raw = event[@source].first begin values = CSV.parse_line(raw, :col_sep => @separator, :quote_char => @quote_char) if @target.nil? # Default is to write to the root of the event. dest = event else dest = event[@target] ||= {} end values.each_index do |i| field_name = @columns[i] || "column#{i+1}" dest[field_name] = values[i] end filter_matched(event) rescue => e event.tag "_csvparsefailure" @logger.warn("Trouble parsing csv", :source => @source, :raw => raw, :exception => e) return end # begin end # if event @logger.debug("Event after csv filter", :event => event) end
register()
click to toggle source
# File lib/logstash/filters/csv.rb, line 38 def register # Nothing to do here end