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



288
289
290
291
292
293
294
295
296
297
298
299
300
# File 'lib/tina4/middleware.rb', line 288

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



280
281
282
283
284
285
286
# File 'lib/tina4/middleware.rb', line 280

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



302
303
304
# File 'lib/tina4/middleware.rb', line 302

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