diff --git a/lib/rackstash/encoder/json.rb b/lib/rackstash/encoder/json.rb index 24b877b..78f38d9 100644 --- a/lib/rackstash/encoder/json.rb +++ b/lib/rackstash/encoder/json.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true # -# Copyright 2017 Holger Just +# Copyright 2017 - 2018 Holger Just # # This software may be modified and distributed under the terms # of the MIT license. See the LICENSE.txt file for details. @@ -28,7 +28,7 @@ module Rackstash # @param event [Hash] a log event as produced by the {Flow} # @return [String] the event as a single-line JSON string def encode(event) - normalize_message(event) + normalize_message(event) unless event[FIELD_MESSAGE].nil? normalize_timestamp(event) ::JSON.dump(event) diff --git a/spec/rackstash/encoder/json_spec.rb b/spec/rackstash/encoder/json_spec.rb index aac29d6..f8aeb67 100644 --- a/spec/rackstash/encoder/json_spec.rb +++ b/spec/rackstash/encoder/json_spec.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true # -# Copyright 2017 Holger Just +# Copyright 2017 - 2018 Holger Just # # This software may be modified and distributed under the terms # of the MIT license. See the LICENSE.txt file for details. @@ -22,5 +22,15 @@ describe Rackstash::Encoder::JSON do event = { 'message' => "text\nwith\nnewlines" } expect(encoder.encode(event)).to eql '{"message":"text\nwith\nnewlines"}' end + + it 'passes the message as nil' do + event = { 'message' => nil, 'foo' => 'bar' } + expect(encoder.encode(event)).to eql '{"message":null,"foo":"bar"}' + end + + it 'omits a missing message' do + event = { 'foo' => 'bar' } + expect(encoder.encode(event)).to eql '{"foo":"bar"}' + end end end