X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;ds=inline;f=3rdparty%2Fmodules%2Faviator%2Ffeature%2Faviator%2Fcore%2Flogger.rb;fp=3rdparty%2Fmodules%2Faviator%2Ffeature%2Faviator%2Fcore%2Flogger.rb;h=bbb537d7f87e13f555da138154dcc6588c822b8a;hb=4631045ebb77ee8622f6fa09277a50c372bcc02e;hp=0000000000000000000000000000000000000000;hpb=3d4dc4fd9e59bd0e07646c99f6b356c7d9d859aa;p=mirror%2Fdsa-puppet.git 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 000000000..bbb537d7f --- /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