class SmartProxyDynflowCore::LoggerMiddleware
Public Class Methods
new(app)
click to toggle source
# File lib/smart_proxy_dynflow_core/logger_middleware.rb, line 3 def initialize(app) @logger = SmartProxyDynflowCore::Log.instance @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/smart_proxy_dynflow_core/logger_middleware.rb, line 8 def call(env) before = Time.now.to_f status = 500 env['rack.logger'] = @logger @logger.info { "Started #{env['REQUEST_METHOD']} #{env['PATH_INFO']} #{env['QUERY_STRING']}" } @logger.debug { 'Headers: ' + env.select { |k, v| k.start_with? 'HTTP_' }.inspect } if @logger.debug? && env['rack.input'] body = env['rack.input'].read @logger.debug('Body: ' + body) unless body.empty? env['rack.input'].rewind end status, = @app.call(env) rescue Exception => e Log.exception "Error processing request '#{::Logging.mdc['request']}", e raise e ensure @logger.info do after = Time.now.to_f duration = (after - before) * 1000 "Finished #{env['REQUEST_METHOD']} #{env['PATH_INFO']} with #{status} (#{duration.round(2)} ms)" end end