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



248
249
250
251
252
253
254
255
256
257
258
259
260
# File 'lib/tina4/middleware.rb', line 248

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

  Tina4::Log.info("[RequestLogger] #{request.method} #{request.path} -> #{response.status_code} (#{elapsed_ms}ms)")
  [request, response]
end

.before_log(request, response) ⇒ Object



240
241
242
243
244
245
246
# File 'lib/tina4/middleware.rb', line 240

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



262
263
264
# File 'lib/tina4/middleware.rb', line 262

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