module Fluent::TextFormatter::TextToJsonFormatter

Public Instance Methods

configure(conf) click to toggle source
Calls superclass method
# File lib/fluent/plugin/out_text_to_json.rb, line 12
def configure(conf)
  super
  @fields = @json_field.split(",").map{|field| "\"" + field + "\""}
end
format(tag, time, record) click to toggle source
# File lib/fluent/plugin/out_text_to_json.rb, line 17
def format(tag, time, record)
  tmp_field = Array.new
  tmp_field = record.split(@field_splitter)
  
  tmp_field[1] = @field_splitter + tmp_field[1]
  

  #sdr parameters to json format
  tmp_field[0] = tmp_field[0].split("\n")
  tmp_field[0] = tmp_field[0].map{|value| (value == "")? nil:value} # HBase plugin ignores nil values
  tmp_field[0] = tmp_field[0].map{|value| (value == nil)? nil:"\""+value+"\""}
  
  tmp_field[0] = @fields[2,14].zip(tmp_field[0]
  tmp_field[0] = tmp_field[0].map{|x| x.join(":")}.join(",")
  tmp_field[0] = @field[0] + ":" + "{" + tmp_field[0] + "}"
  

  #factor paramters to json format
  tmp_field[1] = tmp_field[1].split("\n")
  #Set factor ID as a second field's name
  head, *tail = tmp_field[1].split("\n")
  haed = head.split("|")
  head = head.map(|field| "\""+field+"\""}


  tail = tail.map{|values| values.split("|")}

  new_tail = Array.new(head.length)
  
  for i in 0..head.length-1
  new_tail[i] = "\"" + tail.map{|values| values[i]}.join(",") + "\""
  end

  tmp_field[1] = "{" +  head.zip(new_tail).map{|field,value| field + ":" + value }.join(",") + "}"
  
  "{" +  @fileds[0] + ":" + "{" + tmp_field[0] + "}," + @fields[1] + ":" + "{" + tmp_field[1] + "}}"
  

end