Sha256: 19c4b03b9ff8197002a2d317761374259e9ad64fccf91821660c89fb05128173

Contents?: true

Size: 1.03 KB

Versions: 6

Compression:

Stored size: 1.03 KB

Contents

require 'json'

require 'active_support/json'
require 'active_support/tagged_logging'

module Hickory
  module Formatters
    class JSON < ::Logger::Formatter
      include ActiveSupport::TaggedLogging::Formatter

      def initialize(options = {})
        @key_mapping = Hash.new.tap { |mapping|
          mapping[:message]   = options.fetch(:message_key, :message)
          mapping[:severity]  = options.fetch(:severity_key, :level)
          mapping[:timestamp] = options.fetch(:timestamp_key, :timestamp)
        }
      end

      def call(severity, time, progname, msg)
        line = msg.tap { |message|
          message[@key_mapping[:message]]   = msg.delete(:message) unless @key_mapping[:message] == :message
          message[@key_mapping[:timestamp]] = time
          message[@key_mapping[:severity]]  = severity
          message[:progname]                = progname unless progname.nil?
          message[:tags]                    = current_tags unless current_tags.empty?
        }

        "#{line.to_json}\n"
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
hickory-0.1.7 lib/hickory/formatters/json.rb
hickory-0.1.6 lib/hickory/formatters/json.rb
hickory-0.1.5 lib/hickory/formatters/json.rb
hickory-0.1.4 lib/hickory/formatters/json.rb
hickory-0.1.3 lib/hickory/formatters/json.rb
hickory-0.1.2 lib/hickory/formatters/json.rb