class FaradayMiddleware::HttpLogger
Log all request to logger, filter login and password
Public Class Methods
new(app, logger)
click to toggle source
Create middleware object
params app [Faraday::Adapter::NetHttp] faraday adapter params logger [Logger] middleware logger
# File lib/faraday_middleware/http_logger.rb, line 15 def initialize(app, logger) @app = app @logger = logger end
Public Instance Methods
call(env)
click to toggle source
Log request to logger
@param env [Faraday::Env] middleware environment
# File lib/faraday_middleware/http_logger.rb, line 24 def call(env) start_time = Time.now info { request_info(env) } debug { "Request headers: #{env[:request_headers].inspect}" } @app.call(env).on_complete do end_time = Time.now response_time = end_time - start_time info { response_info(env, response_time) } debug { "Response headers: #{env[:response_headers].inspect}" } debug { "Response body: #{env[:body].delete("\n")}" } end end
Private Instance Methods
filter(output)
click to toggle source
# File lib/faraday_middleware/http_logger.rb, line 39 def filter(output) output = output.to_s.gsub(/login=[a-zA-Z0-9_]*/, 'login=[LOGIN]') output.to_s.gsub(/psw=[a-zA-Z0-9_]*/, 'psw=[PASSWORD]') end
request_info(env)
click to toggle source
# File lib/faraday_middleware/http_logger.rb, line 44 def request_info(env) format('Started %s request to: %s', env[:method].to_s.upcase, filter(env[:url])) end
response_info(env, response_time)
click to toggle source
# File lib/faraday_middleware/http_logger.rb, line 48 def response_info(env, response_time) format('Response from %s; Status: %d; Time: %.1fms', filter(env[:url]), env[:status], (response_time * 1_000.0)) end