Class: Fizzy::LoggerHooks

Inherits:
Object
  • Object
show all
Includes:
Hooks
Defined in:
lib/fizzy/logger_hooks.rb

Overview

Hooks implementation that logs to Ruby’s Logger.

Examples:

require "logger"
logger = Logger.new($stdout)
hooks = Fizzy::LoggerHooks.new(logger)
client = Fizzy::Client.new(config: config, token_provider: provider, hooks: hooks)

Instance Method Summary collapse

Methods included from Hooks

#on_operation_end, #on_operation_start

Constructor Details

#initialize(logger, level: :debug) ⇒ LoggerHooks

Returns a new instance of LoggerHooks.

Parameters:

  • logger (Logger)

    Ruby logger instance

  • level (Symbol) (defaults to: :debug)

    log level (:debug, :info, :warn, :error)



16
17
18
19
# File 'lib/fizzy/logger_hooks.rb', line 16

def initialize(logger, level: :debug)
  @logger = logger
  @level = level
end

Instance Method Details

#on_paginate(url, page) ⇒ Object



42
43
44
# File 'lib/fizzy/logger_hooks.rb', line 42

def on_paginate(url, page)
  @logger.send(@level, "Fetching page #{page}: #{url}")
end

#on_request_end(info, result) ⇒ Object



25
26
27
28
29
30
31
32
33
34
# File 'lib/fizzy/logger_hooks.rb', line 25

def on_request_end(info, result)
  if result.error
    @logger.send(@level, "HTTP #{info.method} #{info.url} failed: #{result.error.message}")
  else
    cache_info = result.from_cache ? " (cached)" : ""
    @logger.send(@level, \
                 "HTTP #{info.method} #{info.url} -> #{result.status_code}#{cache_info}" \
                 " (#{format("%.3f", result.duration)}s)")
  end
end

#on_request_start(info) ⇒ Object



21
22
23
# File 'lib/fizzy/logger_hooks.rb', line 21

def on_request_start(info)
  @logger.send(@level, "HTTP #{info.method} #{info.url} (attempt #{info.attempt})")
end

#on_retry(info, attempt, error, delay) ⇒ Object



36
37
38
39
40
# File 'lib/fizzy/logger_hooks.rb', line 36

def on_retry(info, attempt, error, delay)
  @logger.send(@level, \
               "Retrying #{info.method} #{info.url} (attempt #{attempt})" \
               " in #{format("%.2f", delay)}s: #{error.message}")
end