Class: Tina4::RequestLoggerMiddleware

Inherits:
Object
  • Object
show all
Defined in:
lib/tina4/middleware.rb

Overview

RequestLoggerMiddleware – logs method, path, and elapsed time for every request.

Class Method Summary collapse

Class Method Details

.after_log(request, response) ⇒ Object



411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
# File 'lib/tina4/middleware.rb', line 411

def after_log(request, response)
  request_key = "#{request.object_id}"
  start_time = @mutex.synchronize { @request_times.delete(request_key) }

  if start_time
    elapsed_ms = ((Process.clock_gettime(Process::CLOCK_MONOTONIC) - start_time) * 1000).round(3)
  else
    elapsed_ms = 0.0
  end

  # v3.13.14: dropped the "[RequestLogger]" prefix for format parity
  # with Python/PHP/Node — the line is just METHOD PATH -> STATUS (Nms).
  Tina4::Log.info("#{request.method} #{request.path} -> #{response.status_code} (#{elapsed_ms}ms)")
  [request, response]
end

.before_log(request, response) ⇒ Object



403
404
405
406
407
408
409
# File 'lib/tina4/middleware.rb', line 403

def before_log(request, response)
  request_key = "#{request.object_id}"
  @mutex.synchronize do
    @request_times[request_key] = Process.clock_gettime(Process::CLOCK_MONOTONIC)
  end
  [request, response]
end

.reset!Object



427
428
429
# File 'lib/tina4/middleware.rb', line 427

def reset!
  @mutex.synchronize { @request_times.clear }
end