Class: Seahorse::Client::Logging::Formatter

Inherits:
Object
  • Object
show all
Defined in:
lib/seahorse/client/logging/formatter.rb

Overview

A log formatter receives a Response object and return a log message as a string. When you construct a Formatter, you provide a pattern string with substitutions.

pattern = ':operation :http_response_status_code :time'
formatter = Seahorse::Logging::Formatter.new(pattern)
formatter.format(response)
#=> 'get_bucket 200 0.0352'

# Canned Formatters

Instead of providing your own pattern, you can choose a canned log formatter.

# Pattern Substitutions

You can put any of these placeholders into you pattern.

* `:client_class` - The name of the client class.

* `:operation` - The name of the client request method.

* `:request_params` - The user provided request parameters. Long
  strings are truncated/summarized if they exceed the
  {#max_string_size}.  Other objects are inspected.

* `:time` - The total time in seconds spent on the
  request.  This includes client side time spent building
  the request and parsing the response.

* `:retries` - The number of times a client request was retried.

* `:http_request_method` - The http request verb, e.g., `POST`,
  `PUT`, `GET`, etc.

* `:http_request_endpoint` - The request endpoint.  This includes
   the scheme, host and port, but not the path.

* `:http_request_scheme` - This is replaced by `http` or `https`.

* `:http_request_host` - The host name of the http request
  endpoint (e.g. 's3.amazon.com').

* `:http_request_port` - The port number (e.g. '443' or '80').

* `:http_request_headers` - The http request headers, inspected.

* `:http_request_body` - The http request payload.

* `:http_response_status_code` - The http response status
  code, e.g., `200`, `404`, `500`, etc.

* `:http_response_headers` - The http response headers, inspected.

* `:http_response_body` - The http response body contents.

* `:error_class`

* `:error_message`

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(pattern, options = {}) ⇒ Formatter

Returns a new instance of Formatter.

Parameters:

  • pattern (String)

    The log format pattern should be a string and may contain substitutions.

  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • :max_string_size (Integer) — default: 1000

    When summarizing request parameters, strings longer than this value will be truncated.



80
81
82
83
# File 'lib/seahorse/client/logging/formatter.rb', line 80

def initialize(pattern, options = {})
  @pattern = pattern
  @max_string_size = options[:max_string_size] || 1000
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name, *args) ⇒ Object (private)



107
108
109
110
111
112
113
# File 'lib/seahorse/client/logging/formatter.rb', line 107

def method_missing(method_name, *args)
  if method_name.to_s.chars.first == '_'
    ":#{method_name.to_s[1..-1]}"
  else
    super
  end
end

Instance Attribute Details

#max_string_sizeInteger (readonly)

Returns:

  • (Integer)


89
90
91
# File 'lib/seahorse/client/logging/formatter.rb', line 89

def max_string_size
  @max_string_size
end

#patternString (readonly)

Returns:

  • (String)


86
87
88
# File 'lib/seahorse/client/logging/formatter.rb', line 86

def pattern
  @pattern
end

Class Method Details

.coloredFormatter

The default log format with ANSI colors.

Examples:

A sample of the colored format (sans the ansi colors).


[ClientClass 200 0.580066 0 retries] list_objects(:bucket_name => 'bucket')

Returns:



292
293
294
295
296
297
298
299
300
301
302
303
304
305
# File 'lib/seahorse/client/logging/formatter.rb', line 292

def colored
  bold = "\x1b[1m"
  color = "\x1b[34m"
  reset = "\x1b[0m"
  pattern = []
  pattern << "#{bold}#{color}[:client_class"
  pattern << ":http_response_status_code"
  pattern << ":time"
  pattern << ":retries retries]#{reset}#{bold}"
  pattern << ":operation(:request_params)"
  pattern << ":error_class"
  pattern << ":error_message#{reset}"
  Formatter.new(pattern.join(' ') + "\n")
end

.defaultFormatter

The default log format.

Examples:

A sample of the default format.


[ClientClass 200 0.580066 0 retries] list_objects(:bucket_name => 'bucket')

Returns:



253
254
255
256
257
258
259
260
261
262
263
# File 'lib/seahorse/client/logging/formatter.rb', line 253

def default
  pattern = []
  pattern << "[:client_class"
  pattern << ":http_response_status_code"
  pattern << ":time"
  pattern << ":retries retries]"
  pattern << ":operation(:request_params)"
  pattern << ":error_class"
  pattern << ":error_message"
  Formatter.new(pattern.join(' ') + "\n")
end

.shortFormatter

The short log format. Similar to default, but it does not inspect the request params or report on retries.

Examples:

A sample of the short format


[ClientClass 200 0.494532] list_buckets

Returns:



274
275
276
277
278
279
280
281
282
# File 'lib/seahorse/client/logging/formatter.rb', line 274

def short
  pattern = []
  pattern << "[:client_class"
  pattern << ":http_response_status_code"
  pattern << ":time]"
  pattern << ":operation"
  pattern << ":error_class"
  Formatter.new(pattern.join(' ') + "\n")
end

Instance Method Details

#eql?(other) ⇒ Boolean Also known as: ==

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)


100
101
102
# File 'lib/seahorse/client/logging/formatter.rb', line 100

def eql?(other)
  other.is_a?(self.class) and other.pattern == self.pattern
end

#format(response) ⇒ String

Given a Response, this will format a log message and return it

as a string.

Parameters:

Returns:

  • (String)


95
96
97
# File 'lib/seahorse/client/logging/formatter.rb', line 95

def format(response)
  pattern.gsub(/:(\w+)/) {|sym| send("_#{sym[1..-1]}", response) }
end