From 0aaffd0736ff1602b1c2c10b94b053477a296dde Mon Sep 17 00:00:00 2001 From: Brad Fritz Date: Wed, 20 Nov 2013 01:00:36 -0500 Subject: [PATCH] [oldlogstashjson] implement encoding of @fields --- lib/logstash/codecs/oldlogstashjson.rb | 9 ++++++++- spec/codecs/oldlogstashjson.rb | 4 +++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/logstash/codecs/oldlogstashjson.rb b/lib/logstash/codecs/oldlogstashjson.rb index 41384c4d2..22a49068d 100644 --- a/lib/logstash/codecs/oldlogstashjson.rb +++ b/lib/logstash/codecs/oldlogstashjson.rb @@ -35,7 +35,14 @@ class LogStash::Codecs::OldLogStashJSON < LogStash::Codecs::Base h[key] = data[val] if data.include?(val) end - h.merge!(data["@fields"]) if data["@fields"].is_a?(Hash) + data.to_hash.each do |field, val| + # TODO: might be better to V1_TO_V0 = V0_TO_V1.invert during + # initialization than V0_TO_V1.has_value? within loop + next if V0_TO_V1.has_value?(field) + h["@fields"] = {} if h["@fields"].nil? + h["@fields"][field] = val + end + @on_event.call(h.to_json) end # def encode diff --git a/spec/codecs/oldlogstashjson.rb b/spec/codecs/oldlogstashjson.rb index cd55a7316..a4b01e0a1 100644 --- a/spec/codecs/oldlogstashjson.rb +++ b/spec/codecs/oldlogstashjson.rb @@ -27,7 +27,8 @@ describe LogStash::Codecs::OldLogStashJSON do it "should return old (v0) json data" do data = {"type" => "t", "message" => "wat!?", "host" => "localhost", "path" => "/foo", - "tags" => ["a","b","c"]} + "tags" => ["a","b","c"], + "bah" => "baz"} event = LogStash::Event.new(data) got_event = false subject.on_event do |d| @@ -37,6 +38,7 @@ describe LogStash::Codecs::OldLogStashJSON do insist { JSON.parse(d)["@source_host"] } == data["host"] insist { JSON.parse(d)["@source_path"] } == data["path"] insist { JSON.parse(d)["@tags"] } == data["tags"] + insist { JSON.parse(d)["@fields"]["bah"] } == "baz" got_event = true end subject.encode(event)