Class: Aws::Log::Formatter

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

  • :region - The region configured for the client.

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

  • :filter_sensitive_params (Boolean) — default: true

    Set to false to disable the sensitive parameter filtering when logging :request_params.



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

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.



111
112
113
114
115
116
117
# File 'gems/aws-sdk-core/lib/aws-sdk-core/log/formatter.rb', line 111

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)


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

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.

  • :filter_sensitive_params (Boolean) — default: true

    Set to false to disable the sensitive parameter filtering when logging :request_params.

Returns:



249
250
251
252
253
254
255
256
257
258
259
260
261
262
# File 'gems/aws-sdk-core/lib/aws-sdk-core/log/formatter.rb', line 249

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.

  • :filter_sensitive_params (Boolean) — default: true

    Set to false to disable the sensitive parameter filtering when logging :request_params.

Returns:



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

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.

  • :filter_sensitive_params (Boolean) — default: true

    Set to false to disable the sensitive parameter filtering when logging :request_params.

Returns:



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

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 response, this will format a log message and return it as a string according to #pattern.

Parameters:

Returns:

  • (String)


106
107
108
# File 'gems/aws-sdk-core/lib/aws-sdk-core/log/formatter.rb', line 106

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