Sha256: 5e24641fbdc19aae6ce253af7a83587c15d499a525a99192e7964960f9f97738
Contents?: true
Size: 1.25 KB
Versions: 1
Compression:
Stored size: 1.25 KB
Contents
module Superlogger class SuperloggerMiddleware def initialize(app) @app = app end def call(env) request = ActionDispatch::Request.new(env) if request.path.start_with?('/assets/') == false process_request(request) { @app.call(env) } else @app.call(env) end end def process_request(request) setup_logging(request) # Start of request Rails.logger.info method: request.method, path: request.fullpath t1 = Time.now status, _headers, _response = yield ensure t2 = Time.now # End of request duration = ((t2 - t1) * 1000).to_f.round(2) Rails.logger.info method: request.method, path: request.fullpath, response_time: duration, status: status [status, _headers, _response] end def setup_logging(request) if request.env['rack.session'] # Session is lazy loaded. Force session to load if it is not already loaded. request.env['rack.session'].send(:load!) unless request.env['rack.session'].id # Store session id before any actual logging is done Superlogger.session_id = request.env['rack.session'].id.to_s end Superlogger.request_id = request.uuid.try(:gsub, '-', '') end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
superlogger-1.0.0 | lib/superlogger/superlogger_middleware.rb |