Class: Legion::API::Middleware::RequestLogger
- Inherits:
-
Object
- Object
- Legion::API::Middleware::RequestLogger
- Defined in:
- lib/legion/api/middleware/request_logger.rb
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app) ⇒ RequestLogger
constructor
A new instance of RequestLogger.
Constructor Details
#initialize(app) ⇒ RequestLogger
Returns a new instance of RequestLogger.
7 8 9 |
# File 'lib/legion/api/middleware/request_logger.rb', line 7 def initialize(app) @app = app end |
Instance Method Details
#call(env) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/legion/api/middleware/request_logger.rb', line 11 def call(env) method_path = "#{env['REQUEST_METHOD']} #{env['PATH_INFO']}" client_info = build_client_info(env) Legion::Logging.info "[api][request-start] #{method_path} #{client_info}" start = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC) status, headers, body = @app.call(env) duration = ((::Process.clock_gettime(::Process::CLOCK_MONOTONIC) - start) * 1000).round(2) level = duration > 5000 ? :warn : :info Legion::Logging.send(level, "[api] #{method_path} #{status} #{duration}ms #{client_info}") [status, headers, body] rescue StandardError => e duration = ((::Process.clock_gettime(::Process::CLOCK_MONOTONIC) - start) * 1000).round(2) Legion::Logging.error "[api] #{method_path} 500 #{duration}ms #{client_info} - #{e.}" raise end |