From ca685bb13b73218010644ec3af0f308632e5253b Mon Sep 17 00:00:00 2001 From: Holger Just Date: Thu, 19 Oct 2017 22:58:51 +0200 Subject: [PATCH] Do not prefix an empty messages with tags If an event's message is completely empty (usually because there was nothing logged at all), it isn't very useful to output this bare marked up message at all. We thus ignore it and pass it along unchanged in the Message encoder. Note that we still add tags for messages consisting of other whitespace like e.g. a newline added from a formatted empty message added to a Logger. --- lib/rackstash/encoders/message.rb | 6 ++++-- spec/rackstash/encoders/message_spec.rb | 11 +++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) 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