Sha256: caabfadb09e3078435c626dc9885914fd13f6fab3c211d6267aa8e946afe7188

Contents?: true

Size: 1.55 KB

Versions: 3

Compression:

Stored size: 1.55 KB

Contents

module Stash
  module Sword
    module LogUtils

      def log
        @log ||= default_logger
      end

      def log_error(e)
        if e.respond_to?(:response)
          log.error(response_to_log_msg(e.response))
        else
          log.error('Unable to log response')
        end
      end

      def response_to_log_msg(response)
        [
          '-----------------------------------------------------',
          "code: #{response.code}",
          'headers:', hash_to_log_msg(response.headers),
          "body:\n#{response.body}",
          '-----------------------------------------------------'
        ].join("\n")
      end

      def log_hash(hash)
        msg = hash_to_log_msg(hash)
        log.debug(msg)
      end

      def hash_to_log_msg(hash)
        hash.map do |k, v|
          value = v.is_a?(Hash) ? v.map { |k2, v2| "\n\t#{k2}: #{v2}" }.join : v
          "#{k}: #{value}"
        end.join("\n")
      end

      def level
        # TODO: make this configurable
        @level ||= case ENV['RAILS_ENV'].to_s.downcase
                   when 'test'
                     Logger::DEBUG
                   when 'development'
                     Logger::INFO
                   else
                     Logger::WARN
                   end
      end

      def default_logger
        logger = Logger.new($stdout, 10, 1024 * 1024)
        logger.level = level
        logger.formatter = proc do |severity, datetime, progname, msg|
          "#{datetime.to_time.utc} #{severity} -#{progname}- #{msg}\n"
        end
        logger
      end

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
stash-sword-0.1.3 lib/stash/sword/log_utils.rb
stash-sword-0.1.2 lib/stash/sword/log_utils.rb
stash-sword-0.1.1 lib/stash/sword/log_utils.rb