Class: Salestation::Web::RequestLogger
- Inherits:
-
Object
- Object
- Salestation::Web::RequestLogger
- Defined in:
- lib/salestation/web/request_logger.rb
Defined Under Namespace
Classes: Logger
Constant Summary collapse
- REMOTE_ADDR =
'REMOTE_ADDR'.freeze
- REQUEST_URI =
'REQUEST_URI'.freeze
- REQUEST_METHOD =
'REQUEST_METHOD'.freeze
- QUERY_STRING =
'QUERY_STRING'.freeze
- CONTENT_TYPE =
'CONTENT_TYPE'.freeze
- HTTP_USER_AGENT =
'HTTP_USER_AGENT'.freeze
- HTTP_ACCEPT =
'HTTP_ACCEPT'.freeze
- SERVER_NAME =
'SERVER_NAME'.freeze
- JSON_CONTENT_TYPE =
'application/json'.freeze
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app, logger, log_response_body: true) ⇒ RequestLogger
constructor
A new instance of RequestLogger.
Constructor Details
#initialize(app, logger, log_response_body: true) ⇒ RequestLogger
Returns a new instance of RequestLogger.
18 19 20 21 22 |
# File 'lib/salestation/web/request_logger.rb', line 18 def initialize(app, logger, log_response_body: true) @app = app @logger = logger @log_response_body = log_response_body end |
Instance Method Details
#call(env) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/salestation/web/request_logger.rb', line 24 def call(env) request_id = SecureRandom.hex(4) request_logger = Logger.new(@logger, request_id) env['request_logger'] = request_logger began_at = Time.now request_logger.info('Received request', request_log(env)) @app.call(env).tap do |status, headers, body| type = status >= 500 ? :error : :info request_logger.public_send(type, 'Processed request', response_log(env, status, headers, body, began_at)) end end |