Sha256: 84ef9c1b634d2719edd2d7616afb8481c01cf79dbb56b584a0085473cebc74c0
Contents?: true
Size: 1.06 KB
Versions: 7
Compression:
Stored size: 1.06 KB
Contents
module TMS #:nodoc: class Logger < Faraday::Response::Middleware #:nodoc: extend Forwardable def initialize(app, logger = nil) super(app) @logger = logger || begin require 'logger' ::Logger.new(STDOUT) end end def_delegators :@logger, :debug, :info, :warn, :error, :fatal def call(env) debug "performing #{env[:method].to_s.upcase.ljust(7)} #{env[:url]}" start = Time.now # In order to log request duration in a threadsafe way, `start` must be a local variable instead of instance variable. @app.call(env).on_complete do |environment| on_complete(environment) log_stuff(start, environment) end end private def log_stuff(start, environment) duration = Time.now - start info "#{environment[:method].to_s.upcase.ljust(7)}#{environment[:status].to_s.ljust(4)}#{environment[:url]} (#{duration} seconds)" debug('response headers') { JSON.pretty_generate environment[:response_headers] } debug('response body') { environment[:body] } end end end
Version data entries
7 entries across 7 versions & 2 rubygems