Class: Aws::Log::Formatter

Inherits:
Object
  • Object
show all
Defined in:
lib/aws-sdk-core/log/formatter.rb

Overview

A log formatter generates a string for logging from a response. This accomplished with a log pattern string:

pattern = ':operation :http_response_status_code :time'
formatter = Aws::Log::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.

  • :filter (Array<Symbol>)

    A list of parameter names that should be filtered when logging ‘:request_params`.

    Formatter.new(pattern, filter: [:password])
    

    The default list of filtered parameters is documented on the ParamFilter class.



86
87
88
89
90
# File 'lib/aws-sdk-core/log/formatter.rb', line 86

def initialize(pattern, options = {})
  @pattern = pattern
  @param_formatter = ParamFormatter.new(options)
  @param_filter = ParamFilter.new(options)
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name, *args) ⇒ Object

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.



104
105
106
107
108
109
110
# File 'lib/aws-sdk-core/log/formatter.rb', line 104

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

#patternString (readonly)

Returns:

  • (String)


93
94
95
# File 'lib/aws-sdk-core/log/formatter.rb', line 93

def pattern
  @pattern
end

Class Method Details

.colored(options = {}) ⇒ Formatter

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')

Parameters:

  • 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.

  • :filter (Array<Symbol>)

    A list of parameter names that should be filtered when logging ‘:request_params`.

    Formatter.new(pattern, filter: [:password])
    

    The default list of filtered parameters is documented on the ParamFilter class.

Returns:



231
232
233
234
235
236
237
238
239
240
241
242
243
244
# File 'lib/aws-sdk-core/log/formatter.rb', line 231

def colored(options = {})
  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", options)
end

.default(options = {}) ⇒ Formatter

The default log format.

Examples:

A sample of the default format.


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

Parameters:

  • 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.

  • :filter (Array<Symbol>)

    A list of parameter names that should be filtered when logging ‘:request_params`.

    Formatter.new(pattern, filter: [:password])
    

    The default list of filtered parameters is documented on the ParamFilter class.

Returns:



194
195
196
197
198
199
200
201
202
203
204
# File 'lib/aws-sdk-core/log/formatter.rb', line 194

def default(options = {})
  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", options)
end

.short(options = {}) ⇒ Formatter

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

Parameters:

  • 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.

  • :filter (Array<Symbol>)

    A list of parameter names that should be filtered when logging ‘:request_params`.

    Formatter.new(pattern, filter: [:password])
    

    The default list of filtered parameters is documented on the ParamFilter class.

Returns:



214
215
216
217
218
219
220
221
222
# File 'lib/aws-sdk-core/log/formatter.rb', line 214

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

Instance Method Details

#format(response) ⇒ String

Given a resopnse, this will format a log message and return it as a

string according to {#pattern}.

Parameters:

Returns:

  • (String)


99
100
101
# File 'lib/aws-sdk-core/log/formatter.rb', line 99

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