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

Inherits:
Object
  • Object
show all
Defined in:
aws-sdk-core/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

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 'aws-sdk-core/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 'aws-sdk-core/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)


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

def max_string_size
  @max_string_size
end

#patternString (readonly)


86
87
88
# File 'aws-sdk-core/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')

292
293
294
295
296
297
298
299
300
301
302
303
304
305
# File 'aws-sdk-core/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')

253
254
255
256
257
258
259
260
261
262
263
# File 'aws-sdk-core/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

274
275
276
277
278
279
280
281
282
# File 'aws-sdk-core/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

#format(response) ⇒ String

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


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

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