Class: RequestLogger

Inherits:
Object
  • Object
show all
Defined in:
lib/sensible_logging/middlewares/request_logger.rb

Overview

Captures information around request

Instance Method Summary collapse

Constructor Details

#initialize(app, filtered_params = []) ⇒ RequestLogger

Returns a new instance of RequestLogger.



7
8
9
10
# File 'lib/sensible_logging/middlewares/request_logger.rb', line 7

def initialize(app, filtered_params = [])
  @app = app
  @filtered_params = filtered_params
end

Instance Method Details

#call(env) ⇒ Object

rubocop:disable Metrics/AbcSize



12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/sensible_logging/middlewares/request_logger.rb', line 12

def call(env) # rubocop:disable Metrics/AbcSize
  req = Rack::Request.new(env)
  start_time = Time.now
  status, headers, body = @app.call(env)
  end_time = Time.now - start_time

  client_ip = req.ip || 'n/a'

  message = "method=#{req.request_method} path=#{req.path} client=#{client_ip} status=#{status} duration=#{end_time}"
  filtered_params = filter_params(req)
  message += " params=#{filtered_params}" if req.get? && !filtered_params.empty?
  env['logger'].info(message)
  [status, headers, body]
end