Sha256: acd29e17064f455238df84cd448ad8e41896f5708fec48866cb4d80c0e181047

Contents?: true

Size: 811 Bytes

Versions: 10

Compression:

Stored size: 811 Bytes

Contents

require 'rack'
require 'colorize'

module Tres
  class RackLogger < ::Rack::CommonLogger
    private
    def log env, status, header, began_at
      now = Time.now
      length = extract_content_length(header)

      logger = @logger || env['rack.errors']
      logger.write Tres::OUTPUT_FORMAT % (
        "[%s] %s %s\n" % [
          colorized_status(status),
          env["REQUEST_METHOD"],
          env["PATH_INFO"]
        ]
      )
    end

    def extract_content_length(headers)
      value = headers['Content-Length'] or return '-'
      value.to_s == '0' ? '-' : value
    end

    def colorized_status status
      color = :green
      case status.to_s[0]
      when '3'
        color = :yellow
      when '4'
        color = :red
      end
      status.to_s[0..3].colorize(color)
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
tres-0.1.10 lib/tres/rack_logger.rb
tres-0.1.9 lib/tres/rack_logger.rb
tres-0.1.8 lib/tres/rack_logger.rb
tres-0.1.7 lib/tres/rack_logger.rb
tres-0.1.6 lib/tres/rack_logger.rb
tres-0.1.5 lib/tres/rack_logger.rb
tres-0.1.4 lib/tres/rack_logger.rb
tres-0.1.2 lib/tres/rack_logger.rb
tres-0.1.1 lib/tres/rack_logger.rb
tres-0.1.0 lib/tres/rack_logger.rb