From 06a4f204f2a25cf947ad0300e2ca9b8c7df384c7 Mon Sep 17 00:00:00 2001 From: Joao Fernandes Date: Fri, 17 Feb 2017 19:23:06 +0000 Subject: [PATCH] Stringify key :message in the base formatter Doing the following (an example taken from the README file) logger.debug message: 'test', foo: 'bar' will fail for any logger whose the formatter's class inherits from LogStashLogger::Formatter::Base when LogStashLogger.configuration.max_message_size is set. This happens because event['message'.freeze].byteslice (previously on line 49) will fail as event['message'.freeze] will return nil. --- lib/logstash-logger/formatter/base.rb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/logstash-logger/formatter/base.rb b/lib/logstash-logger/formatter/base.rb index 0c7dd89..fcc6ba4 100644 --- a/lib/logstash-logger/formatter/base.rb +++ b/lib/logstash-logger/formatter/base.rb @@ -25,7 +25,9 @@ def build_event(message, severity, time) when LogStash::Event data.clone when Hash - event_data = data.merge("@timestamp".freeze => time) + event_data = data.clone + event_data['message'.freeze] = event_data.delete(:message) if event_data.key?(:message) + event_data['@timestamp'.freeze] = time LogStash::Event.new(event_data) else LogStash::Event.new("message".freeze => msg2str(data), "@timestamp".freeze => time) @@ -37,7 +39,7 @@ def build_event(message, severity, time) event['host'.freeze] ||= HOST current_tags.each { |tag| event.tag(tag) } - + LogStashLogger.configuration.customize_event_block.call(event) if LogStashLogger.configuration.customize_event_block.respond_to?(:call) # In case Time#to_json has been overridden @@ -48,7 +50,7 @@ def build_event(message, severity, time) if LogStashLogger.configuration.max_message_size event['message'.freeze] = event['message'.freeze].byteslice(0, LogStashLogger.configuration.max_message_size) end - + event end end