class Rack::CommonLogger

Patch CommonLogger to use after_reply.

Simply request this file and CommonLogger will be a bit more efficient.

Constants

HIJACK_FORMAT

Public Instance Methods

call(env) click to toggle source
# File vendor/gems/puma-2.8.2-java/lib/puma/rack_patch.rb, line 11
def call(env)
  began_at = Time.now
  status, header, body = @app.call(env)
  header = Utils::HeaderHash.new(header)

  # If we've been hijacked, then output a special line
  if env['rack.hijack_io']
    log_hijacking(env, 'HIJACK', header, began_at)
  elsif ary = env['rack.after_reply']
    ary << lambda { log(env, status, header, began_at) }
  else
    body = BodyProxy.new(body) { log(env, status, header, began_at) }
  end

  [status, header, body]
end
log_hijacking(env, status, header, began_at) click to toggle source
# File vendor/gems/puma-2.8.2-java/lib/puma/rack_patch.rb, line 30
def log_hijacking(env, status, header, began_at)
  now = Time.now

  logger = @logger || env['rack.errors']
  logger.write HIJACK_FORMAT % [
    env['HTTP_X_FORWARDED_FOR'] || env["REMOTE_ADDR"] || "-",
    env["REMOTE_USER"] || "-",
    now.strftime("%d/%b/%Y %H:%M:%S"),
    env["REQUEST_METHOD"],
    env["PATH_INFO"],
    env["QUERY_STRING"].empty? ? "" : "?"+env["QUERY_STRING"],
    env["HTTP_VERSION"],
    now - began_at ]
end