diff --git a/lib/rackstash/encoders/message.rb b/lib/rackstash/encoders/message.rb index ef9a127..98e71ea 100644 --- a/lib/rackstash/encoders/message.rb +++ b/lib/rackstash/encoders/message.rb @@ -45,8 +45,10 @@ module Rackstash normalize_message(event) message = event[FIELD_MESSAGE] - tags = @tagged_fields.map { |key| format_tag event[key] }.compact.join - message = message.gsub(/^/) { tags } unless tags.empty? + unless message.empty? + tags = @tagged_fields.map { |key| format_tag event[key] }.compact.join + message = message.gsub(/^/) { tags } unless tags.empty? + end message end diff --git a/spec/rackstash/encoders/message_spec.rb b/spec/rackstash/encoders/message_spec.rb index af8e494..04869da 100644 --- a/spec/rackstash/encoders/message_spec.rb +++ b/spec/rackstash/encoders/message_spec.rb @@ -43,6 +43,17 @@ describe Rackstash::Encoders::Message do event = { 'message' => ["line1\n", "line2\n"] } expect(encoder.encode(event)).to eql "line1\nline2\n" end + + it 'does not prefix fields on an empty message' do + event = { 'message' => [], 'tags' => ['foo', 'bar'] } + expect(encoder.encode(event)).to eql '' + end + + it 'prefixes fields with a single newline' do + event = { 'message' => ["\n"], 'tags' => ['foo', 'bar'] } + expect(encoder.encode(event)).to eql "[foo,bar] \n" + end + end end end