Sha256: 0aacd40a8d6b257e5b86be0194ae2cea2162d67880a02c83f9832766ec8d35ea

Contents?: true

Size: 960 Bytes

Versions: 2

Compression:

Stored size: 960 Bytes

Contents

module Hickory
  module Formatters
    class JSON < ::Logger::Formatter
      def initialize(options = {})
        @key_mappings = 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)
          mapping[:env]       = options.fetch(:env_key, :env)
        }
      end

      def call(severity, time, progname, msg)
        line = msg.tap { |message|
          message[@key_mappings[:message]]      = msg.delete(:message) unless @key_mappings[:message] == :message
          message[@key_mappings[:timestamp]]    = time
          message[@key_mappings[:severity]]     = severity
          message[@key_mappings[:env]]          = Rails.env
          message[:progname]                    = progname if progname.present?
        }

        line.to_json
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
hickory-0.1.1 lib/hickory/formatters/json.rb
hickory-0.1.0 lib/hickory/formatters/json.rb