Sha256: 2eb85507aa83ddb9ff703c5bc2ef2ecd825b55da808c18569431a3532d711c0d

Contents?: true

Size: 1.39 KB

Versions: 8

Compression:

Stored size: 1.39 KB

Contents

# encoding: utf-8
require "logstash/codecs/base"
require "logstash/timestamp"
require "logstash/util"

class LogStash::Codecs::Msgpack < LogStash::Codecs::Base
  config_name "msgpack"


  config :format, :validate => :string, :default => nil

  public
  def register
    require "msgpack"
  end

  public
  def decode(data)
    begin
      # Msgpack does not care about UTF-8
      event = LogStash::Event.new(MessagePack.unpack(data))
      event["tags"] ||= []
      if @format
        event["message"] ||= event.sprintf(@format)
      end
    rescue => e
      # Treat as plain text and try to do the best we can with it?
      @logger.warn("Trouble parsing msgpack input, falling back to plain text",
                   :input => data, :exception => e)
      event["message"] = data
      event["tags"] ||= []
      event["tags"] << "_msgpackparsefailure"
    end
    yield event
  end # def decode

  public
  def encode(event)
    # use normalize to make sure returned Hash is pure Ruby for
    # MessagePack#pack which relies on pure Ruby object recognition
    data = LogStash::Util.normalize(event.to_hash)
    # timestamp is serialized as a iso8601 string
    # merge to avoid modifying data which could have side effects if multiple outputs
    @on_event.call(event, MessagePack.pack(data.merge(LogStash::Event::TIMESTAMP => event.timestamp.to_iso8601)))
  end # def encode

end # class LogStash::Codecs::Msgpack

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
logstash-codec-msgpack-2.0.4-java lib/logstash/codecs/msgpack.rb
logstash-codec-msgpack-2.0.2-java lib/logstash/codecs/msgpack.rb
logstash-codec-msgpack-2.0.1-java lib/logstash/codecs/msgpack.rb
logstash-codec-msgpack-2.0.0-java lib/logstash/codecs/msgpack.rb
logstash-codec-msgpack-1.0.0-java lib/logstash/codecs/msgpack.rb
logstash-codec-msgpack-0.1.7-java lib/logstash/codecs/msgpack.rb
logstash-codec-msgpack-0.1.6-java lib/logstash/codecs/msgpack.rb
logstash-codec-msgpack-0.1.5-java lib/logstash/codecs/msgpack.rb