Sha256: 93383185d661830efd4b20baf9e74f03cbd2574efdfd584a7497ab0184e5663a

Contents?: true

Size: 1.19 KB

Versions: 4

Compression:

Stored size: 1.19 KB

Contents

require 'logger'
require 'socket'
require 'time'

module LogStashLogger
  HOST = ::Socket.gethostname

  class Formatter < ::Logger::Formatter
    include TaggedLogging::Formatter

    def call(severity, time, progname, message)
      event = build_event(message, severity, time)
      "#{event.to_json}\n"
    end

    protected

    def build_event(message, severity, time)
      data = message
      if data.is_a?(String) && data.start_with?('{')
        data = (JSON.parse(message) rescue nil) || message
      end

      event = case data
                when LogStash::Event
                  data.clone
                when Hash
                  event_data = data.merge("@timestamp" => time)
                  LogStash::Event.new(event_data)
                when String
                  LogStash::Event.new("message" => data, "@timestamp" => time)
              end

      event['severity'] ||= severity
      #event.type = progname

      event['host'] ||= HOST

      current_tags.each do |tag|
        event.tag(tag)
      end

      # In case Time#to_json has been overridden
      if event.timestamp.is_a?(Time)
        event.timestamp = event.timestamp.iso8601(3)
      end

      event
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
logstash-logger-0.6.2 lib/logstash-logger/formatter.rb
logstash-logger-0.6.1 lib/logstash-logger/formatter.rb
logstash-logger-0.6.0 lib/logstash-logger/formatter.rb
logstash-logger-0.5.0 lib/logstash-logger/formatter.rb