lib/logstash/codecs/plain.rb in logstash-codec-plain-3.0.6 vs lib/logstash/codecs/plain.rb in logstash-codec-plain-3.1.0

- old
+ new

@@ -1,14 +1,21 @@ # encoding: utf-8 require "logstash/codecs/base" require "logstash/util/charset" +require 'logstash/plugin_mixins/ecs_compatibility_support' +require 'logstash/plugin_mixins/event_support/event_factory_adapter' + # The "plain" codec is for plain text with no delimiting between events. # # This is mainly useful on inputs and outputs that already have a defined # framing in their transport protocol (such as zeromq, rabbitmq, redis, etc) class LogStash::Codecs::Plain < LogStash::Codecs::Base + + include LogStash::PluginMixins::ECSCompatibilitySupport(:disabled, :v1, :v8 => :v1) + include LogStash::PluginMixins::EventSupport::EventFactoryAdapter + config_name "plain" # Set the message you which to emit for each event. This supports `sprintf` # strings. # @@ -22,18 +29,30 @@ # or in another character set other than `UTF-8`. # # This only affects "plain" format logs since json is `UTF-8` already. config :charset, :validate => ::Encoding.name_list, :default => "UTF-8" - MESSAGE_FIELD = "message".freeze + def initialize(*params) + super - def register + @original_field = ecs_select[disabled: nil, v1: '[event][original]'] + @converter = LogStash::Util::Charset.new(@charset) @converter.logger = @logger end + def register + # no-op + end + + MESSAGE_FIELD = "message".freeze + def decode(data) - yield LogStash::Event.new(MESSAGE_FIELD => @converter.convert(data)) + message = @converter.convert(data) + event = event_factory.new_event + event.set MESSAGE_FIELD, message + event.set @original_field, message.dup.freeze if @original_field + yield event end def encode(event) encoded = @format ? event.sprintf(@format) : event.to_s @on_event.call(event, encoded)