X-Git-Url: https://git.donarmstrong.com/?p=dsa-puppet.git;a=blobdiff_plain;f=3rdparty%2Fmodules%2Faviator%2Ffeature%2Faviator%2Fcore%2Flogger.rb;fp=3rdparty%2Fmodules%2Faviator%2Ffeature%2Faviator%2Fcore%2Flogger.rb;h=bbb537d7f87e13f555da138154dcc6588c822b8a;hp=0000000000000000000000000000000000000000;hb=b7626cbcbb2fb8e7ce3dc5ac60e80a981175f9d3;hpb=8132e6bb1199463f5e334326659c974d4772b3e3 diff --git a/3rdparty/modules/aviator/feature/aviator/core/logger.rb b/3rdparty/modules/aviator/feature/aviator/core/logger.rb new file mode 100644 index 00000000..bbb537d7 --- /dev/null +++ b/3rdparty/modules/aviator/feature/aviator/core/logger.rb @@ -0,0 +1,55 @@ +module Aviator + + class Logger < Faraday::Response::Middleware + extend Forwardable + + def initialize(app, logger=nil) + super(app) + @logger = logger || begin + require 'logger' + ::Logger.new(self.class::LOG_FILE_PATH) + end + end + + + def_delegators :@logger, :debug, :info, :warn, :error, :fatal + + + def call(env) + info(env[:method].to_s.upcase) { env[:url].to_s } + debug('REQ_HEAD') { dump_headers env[:request_headers] } + debug('REQ_BODY') { dump_body env[:body] } + super + end + + + def on_complete(env) + info('STATUS') { env[:status].to_s } + debug('RES_HEAD') { dump_headers env[:response_headers] } + debug('RES_BODY') { dump_body env[:body] } + end + + + def self.configure(log_file_path) + # Return a subclass with its logfile path set. This + # must be done so that different sessions can log to + # different paths. + Class.new(self) { const_set('LOG_FILE_PATH', log_file_path) } + end + + + private + + def dump_body(body) + return if body.nil? + + # :TODO => Make this configurable + body.gsub(/["']password["']:["']\w*["']/, '"password":[FILTERED_VALUE]') + end + + def dump_headers(headers) + headers.map { |k, v| "#{k}: #{v.inspect}" }.join("; ") + end + end + +end