17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
# File 'lib/fluent/plugin/formatter_text_to_json.rb', line 17
def format(tag, time, record)
tmp_field = record["message"].values.join("").split(@field_splitter)
tmp_field[1] = @field_splitter + tmp_field[1]
tmp_field[0] = tmp_field[0].split("\n")
tmp_field[0] = tmp_field[0].map{|value| (value == "")? nil:value} 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{|field, value|
new_value = (value==nil)? "null":value
field+":"+new_value}.join(",")
head, *tail = tmp_field[1].split("\n")
head = 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]}
new_tail[i] = "\"" + new_tail[i][0,new_tail[i].length-2].join("|") + "\""
end
tmp_field[1] = head.zip(new_tail).map{|field,value| field + ":" + value }.join(",")
out_string = "{#{@fields[0]}:{#{tmp_field[0]}},#{@fields[1]}:{#{tmp_field[1]}}}"
JSON.parse(out_string.gsub('\"','"'))
end
|