class LogStash::Codecs::Fluent
This codec handles fluentd's msgpack schema.
For example, you can receive logs from fluent-logger-ruby with:
input { tcp { codec => fluent port => 4000 } }
And from your ruby code in your own application:
logger = Fluent::Logger::FluentLogger.new(nil, :host => "example.log", :port => 4000) logger.post("some_tag", { "your" => "data", "here" => "yay!" })
Notes:
-
the fluent uses a second-precision time for events, so you will never see subsecond precision on events processed by this codec.
Public Instance Methods
decode(data) { |event| ... }
click to toggle source
# File lib/logstash/codecs/fluent.rb, line 37 def decode(data) @decoder.feed(data) @decoder.each do |tag, epochtime, map| event = LogStash::Event.new(map.merge( "@timestamp" => Time.at(epochtime), "tags" => tag )) yield event end end
encode(event)
click to toggle source
# File lib/logstash/codecs/fluent.rb, line 49 def encode(event) tag = event["tags"] || "log" epochtime = event["@timestamp"].to_i @on_event.call(MessagePack.pack([ tag, epochtime, event.to_hash ])) end
register()
click to toggle source
# File lib/logstash/codecs/fluent.rb, line 31 def register require "msgpack" @decoder = MessagePack::Unpacker.new end