class Ramverk::Middleware::RequestLogger
Request logger based on `Rack::CommonLogger`.
Each request will output in the following format:
web: [200] GET /books/5 from 120.0.0.1 in 0.0032 with {"id"=>"5"}
Constants
- FORMAT
@private
Public Class Methods
new(app, logger, filter_params = [])
click to toggle source
@private
Calls superclass method
# File lib/ramverk/middleware/request_logger.rb, line 17 def initialize(app, logger, filter_params = []) @filter_params = filter_params super(app, logger) end
Private Instance Methods
filter(params)
click to toggle source
@private
# File lib/ramverk/middleware/request_logger.rb, line 46 def filter(params) filtered_params = params.dup filtered_params.each do |k, v| if v.is_a?(Hash) filtered_params[k] = filter(v) elsif @filter_params.include?(k) filtered_params[k] = "[FILTERED]" end end filtered_params end
log(env, status, _, began_at)
click to toggle source
@private rubocop:disable Metrics/AbcSize
# File lib/ramverk/middleware/request_logger.rb, line 27 def log(env, status, _, began_at) req = Rack::Request.new(env) params = (env["router.params"] || {}).merge(req.params) msg = format(FORMAT, app: env["ramverk.application"], verb: req.request_method, status: status.to_s[0..3], path: req.path, ip: req.ip, time: Rack::Utils.clock_time - began_at, params: params.empty? ? "{}" : filter(params)) @logger.info(msg) end