class Faraday::LogfmtLogger::Middleware
Constants
- DEFAULT_OPTIONS
Public Class Methods
new(app, logger = nil, options = {}) { |self| ... }
click to toggle source
Calls superclass method
# File lib/faraday/logfmt_logger/middleware.rb, line 12 def initialize(app, logger = nil, options = {}) super(app) @logger = logger || begin require "logger" ::Logger.new(STDOUT) end @filter = [] @options = DEFAULT_OPTIONS.merge(options) yield self if block_given? end
Public Instance Methods
call(env)
click to toggle source
Calls superclass method
# File lib/faraday/logfmt_logger/middleware.rb, line 26 def call(env) info("request") do log_entry = { "source": "upstream-request", "method": env.method.upcase, "url": apply_filters(env.url.to_s), "request_id": request_id, }.merge(app_metadata) Twingly::StringUtilities.logfmt(log_entry) end debug_log_request(env) super end
filter(filter_word, filter_replacement)
click to toggle source
rubocop:disable all
# File lib/faraday/logfmt_logger/middleware.rb, line 58 def filter(filter_word, filter_replacement) @filter.push([ filter_word, filter_replacement ]) end
on_complete(env)
click to toggle source
# File lib/faraday/logfmt_logger/middleware.rb, line 41 def on_complete(env) info("response") do log_entry = { "source": "upstream-response", "status": env.status, "request_id": request_id, }.merge(app_metadata) Twingly::StringUtilities.logfmt(log_entry) end debug_log_response(env) end
Private Instance Methods
app_metadata()
click to toggle source
# File lib/faraday/logfmt_logger/middleware.rb, line 69 def app_metadata { "release": Twingly::HTTP::Heroku.release_version, } end
apply_filters(output)
click to toggle source
# File lib/faraday/logfmt_logger/middleware.rb, line 117 def apply_filters(output) @filter.each do |pattern, replacement| output = output.to_s.gsub(pattern, replacement) end output end
debug_log_request(env)
click to toggle source
rubocop:disable all
# File lib/faraday/logfmt_logger/middleware.rb, line 76 def debug_log_request(env) debug('request') { apply_filters( dump_headers env.request_headers ) } if log_headers?(:request) debug('request') { apply_filters( dump_body(env[:body]) ) } if env[:body] && log_body?(:request) end
debug_log_response(env)
click to toggle source
# File lib/faraday/logfmt_logger/middleware.rb, line 81 def debug_log_response(env) debug('response') { apply_filters( dump_headers env.response_headers ) } if log_headers?(:response) debug('response') { apply_filters( dump_body env[:body] ) } if env[:body] && log_body?(:response) end
dump_body(body)
click to toggle source
# File lib/faraday/logfmt_logger/middleware.rb, line 90 def dump_body(body) if body.respond_to?(:to_str) body.to_str else pretty_inspect(body) end end
dump_headers(headers)
click to toggle source
# File lib/faraday/logfmt_logger/middleware.rb, line 86 def dump_headers(headers) headers.map { |k, v| "#{k}: #{v.inspect}" }.join("\n") end
log_body?(type)
click to toggle source
# File lib/faraday/logfmt_logger/middleware.rb, line 110 def log_body?(type) case @options[:bodies] when Hash then @options[:bodies][type] else @options[:bodies] end end
log_headers?(type)
click to toggle source
# File lib/faraday/logfmt_logger/middleware.rb, line 103 def log_headers?(type) case @options[:headers] when Hash then @options[:headers][type] else @options[:headers] end end
pretty_inspect(body)
click to toggle source
# File lib/faraday/logfmt_logger/middleware.rb, line 98 def pretty_inspect(body) require 'pp' unless body.respond_to?(:pretty_inspect) body.pretty_inspect end
request_id()
click to toggle source
rubocop:enable all
# File lib/faraday/logfmt_logger/middleware.rb, line 65 def request_id @options[:request_id] end