class AppLogger::Middleware
Constants
- FORMAT
Attributes
log_level[R]
Public Class Methods
new(app, options)
click to toggle source
Calls superclass method
# File lib/app_logger/middleware.rb, line 8 def initialize(app, options) super(app, options[:logger]) @log_level = options[:log_level] || Logger::INFO end
Private Instance Methods
format_message(msg)
click to toggle source
# File lib/app_logger/middleware.rb, line 50 def format_message(msg) FORMAT % [ msg[:host], msg[:user], msg[:time], msg[:method], msg[:path], msg[:query], msg[:http_version], msg[:status], msg[:response_length], msg[:response_time] ] end
log(env, status, header, began_at)
click to toggle source
# File lib/app_logger/middleware.rb, line 16 def log(env, status, header, began_at) msg = message(env, status, header, began_at) logger = @logger || env['rack.errors'] if logger.respond_to?(:log) msg[:request_line] = "#{msg[:method]} #{msg[:path]}#{msg[:query]} #{msg[:http_version]}" logger.log(log_level, msg) elsif logger.respond_to?(:write) logger.write(format_message(msg)) else logger << format_message(msg) end end
message(env, status, header, began_at)
click to toggle source
# File lib/app_logger/middleware.rb, line 30 def message(env, status, header, began_at) method = env[Rack::REQUEST_METHOD] path = env[Rack::PATH_INFO] query = env[Rack::QUERY_STRING].empty? ? "" : "?"+env[Rack::QUERY_STRING] http_version = env["HTTP_VERSION"] || "-" now = Time.now { remote: env['HTTP_X_FORWARDED_FOR'] || env["REMOTE_ADDR"] || "-", user: env["REMOTE_USER"] || "-", method: method, path: path, query: query, http_version: http_version, status: status.to_s[0..3].to_i, response_length: extract_content_length(header).to_i, response_time: (now - began_at) } end