Sha256: 7dbe2cfcb1987945b4b94b4c8511473cd5b76f1e1a6b75b132ba897d91d4b7bc

Contents?: true

Size: 976 Bytes

Versions: 29

Compression:

Stored size: 976 Bytes

Contents

module Alula
  class CommonLogger
    # Common Log Format: http://httpd.apache.org/docs/1.3/logs.html#common
    # lilith.local - - [07/Aug/2006 23:58:02] "GET / HTTP/1.1" 500 -
    #             %{%s - %s [%s] "%s %s%s %s" %d %s\n} %
    # FORMAT = %{[%s] %s %s\n}

    def initialize(app, logger=nil)
      @app = app
      @logger = logger
    end

    def call(env)
      request_start = Time.now
      status, header, body = @app.call(env)
      header = Rack::Utils::HeaderHash.new(header)
      env["REQUEST_TIME"] = (Time.now - request_start) * 1000.0
      body = Rack::BodyProxy.new(body) { log(env, status, header) }
      [status, header, body]
    end

    private

    def log(env, status, header)
      logger = @logger || env['rack.errors']
      logger.write %{[%s] %s %d %.3fms %s\n} % [
        env["REMOTE_ADDR"],
        env["REQUEST_METHOD"],
        status,
        env["REQUEST_TIME"],
        Rack::Utils.unescape(env["PATH_INFO"])]
    end
  end
end

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
alula-0.4.27 lib/alula/support/commonlogger.rb
alula-0.4.26 lib/alula/support/commonlogger.rb
alula-0.4.25 lib/alula/support/commonlogger.rb
alula-0.4.24 lib/alula/support/commonlogger.rb
alula-0.4.23 lib/alula/support/commonlogger.rb
alula-0.4.22 lib/alula/support/commonlogger.rb
alula-0.4.21 lib/alula/support/commonlogger.rb
alula-0.4.20 lib/alula/support/commonlogger.rb
alula-0.4.19 lib/alula/support/commonlogger.rb
alula-0.4.18 lib/alula/support/commonlogger.rb
alula-0.4.17 lib/alula/support/commonlogger.rb
alula-0.4.16 lib/alula/support/commonlogger.rb
alula-0.4.15 lib/alula/support/commonlogger.rb
alula-0.4.14 lib/alula/support/commonlogger.rb
alula-0.4.13 lib/alula/support/commonlogger.rb
alula-0.4.12 lib/alula/support/commonlogger.rb
alula-0.4.11 lib/alula/support/commonlogger.rb
alula-0.4.11a lib/alula/support/commonlogger.rb
alula-0.4.10 lib/alula/support/commonlogger.rb
alula-0.4.9 lib/alula/support/commonlogger.rb