Class: AWS::Core::LogFormatter
- Inherits:
-
Object
- Object
- AWS::Core::LogFormatter
- Defined in:
- lib/aws/core/log_formatter.rb
Overview
Log Formatters
Log formatters receive a Response object and return a log message. When you construct a LogFormatter, you provide a pattern string with substitutions.
pattern = '[REQUEST :http_status_code] :service :operation :duration'
formatter = AWS::Core::LogFormatter.new(pattern)
formatter.format(response)
#=> '[AWS 200] EC2 get_bucket 0.0352'
AWS Configuration
AWS.config provides a LogFormatter.default log formatter. You can repace this formatter by building your own and then passing it to AWS.config.
pattern = '[REQUEST :http_status_code] :service :operation :duration'
AWS.config(:log_formatter => AWS::Core::LogFormatter.new(pattern)
Canned Formatters
Instead of providing your own pattern, you can choose a canned log formatter.
AWS.config(:log_formatter => AWS::Core::LogFormatter.colored)
Here is the list of canned formatters.
Pattern Substitutions
You can put any of these placeholders into you pattern.
:service
-
The AWS service name (e.g. ‘S3’, ‘EC2’, ‘SimpleDB’, etc)
:region
-
The AWS region name (e.g. ‘us-east-1’, ‘us-west-1’, etc)
:operation
-
The name of the client request method. This maps to the name of the serivce API operation (e.g. :describe_instances).
:options
-
The hash of options passed to the client request method. Long strings are truncated/summarized if they excede the log formatters #max_string_size. Other objects are inspected.
:retry_count
-
The number of times a client request was retried. Throttlings and service errors trigger the automatic retry logic. This value indicates how many extra attempts were made before getting a successful response or giving up.
:duration
-
The time it took to generate a response, expressed in decimal seconds. This time includes everything from calling the client request method, until that method returns a value (event retries and retry delays).
:error_class
-
The class name of the error returned by the service. If no error was returned, this will be replcaed by an empty string.
:error_message
-
The message of the error returned. If no error was returned by the service, this will be an empty string.
:http_request_method
-
The HTTP request verb (e.g. ‘POST’, ‘PUT’, ‘GET’, etc).
:http_request_protocol
-
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_uri
-
The http request uri folling the host (e.g. ‘/bucket_name/objects/key?versions’).
:http_request_body
-
The http request payload.
:http_request_headers
-
The http request headers, inspected.
:http_request_proxy_uri
-
The proxy uri used, or an empty string.
:http_response_status
-
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.
Instance Attribute Summary collapse
- #max_string_size ⇒ Integer readonly
- #pattern ⇒ String readonly
Class Method Summary collapse
-
.colored ⇒ LogFormatter
The default log format with ANSI colors.
-
.debug ⇒ LogFormatter
A debug format that dumps most of the http request and response data.
-
.default ⇒ LogFormatter
The default log format.
-
.short ⇒ LogFormatter
The short log format.
Instance Method Summary collapse
- #format(response) ⇒ String
-
#initialize(pattern, options = {}) ⇒ LogFormatter
constructor
A new instance of LogFormatter.
Constructor Details
#initialize(pattern, options = {}) ⇒ LogFormatter
Returns a new instance of LogFormatter.
155 156 157 158 |
# File 'lib/aws/core/log_formatter.rb', line 155 def initialize pattern, = {} @pattern = pattern @max_string_size = [:max_string_size] || 1000 end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *args) ⇒ Object (protected)
174 175 176 177 178 179 180 |
# File 'lib/aws/core/log_formatter.rb', line 174 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_size ⇒ Integer (readonly)
164 165 166 |
# File 'lib/aws/core/log_formatter.rb', line 164 def max_string_size @max_string_size end |
#pattern ⇒ String (readonly)
161 162 163 |
# File 'lib/aws/core/log_formatter.rb', line 161 def pattern @pattern end |
Class Method Details
.colored ⇒ LogFormatter
The default log format with ANSI colors.
430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 |
# File 'lib/aws/core/log_formatter.rb', line 430 def colored bold = "\x1b[1m" color = "\x1b[34m" reset = "\x1b[0m" pattern = [] pattern << "#{bold}#{color}[AWS" pattern << ":service" pattern << ":http_response_status" pattern << ":duration" pattern << ":retry_count retries]#{reset}#{bold}" pattern << ":operation(:options)" pattern << ":error_class" pattern << ":error_message#{reset}" LogFormatter.new(pattern.join(' ') + "\n") end |
.debug ⇒ LogFormatter
A debug format that dumps most of the http request and response data.
381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 |
# File 'lib/aws/core/log_formatter.rb', line 381 def debug sig_pattern = [] sig_pattern << ':region' sig_pattern << ':service' sig_pattern << ':operation' sig_pattern << ':duration' sig_pattern << ':retry_count retries' uri_pattern = [] uri_pattern << ':http_request_protocol' uri_pattern << '://' uri_pattern << ':http_request_host' uri_pattern << '::' uri_pattern << ':http_request_port' uri_pattern << ':' uri_pattern << ':http_request_uri' line = "+" + '-' * 79 pattern = [] pattern << line pattern << "| AWS #{sig_pattern.join(' ')}" pattern << line pattern << "| REQUEST" pattern << line pattern << "| METHOD: :http_request_method" pattern << "| URL: #{uri_pattern.join}" pattern << "| HEADERS: :http_request_headers" pattern << "| BODY: :http_request_body" pattern << line pattern << "| RESPONSE" pattern << line pattern << "| STATUS: :http_response_status" pattern << "| HEADERS: :http_response_headers" pattern << "| BODY: :http_response_body" LogFormatter.new(pattern.join("\n") + "\n") end |
.default ⇒ LogFormatter
The default log format.
319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 |
# File 'lib/aws/core/log_formatter.rb', line 319 def default pattern = [] pattern << "[AWS" pattern << ":service" pattern << ":http_response_status" pattern << ":duration" pattern << ":retry_count retries]" pattern << ":operation(:options)" pattern << ":error_class" pattern << ":error_message" LogFormatter.new(pattern.join(' ') + "\n") end |
.short ⇒ LogFormatter
The short log format. Similar to default, but it does not inspect the request params or report on retries.
344 345 346 347 348 349 350 351 352 353 354 355 356 |
# File 'lib/aws/core/log_formatter.rb', line 344 def short pattern = [] pattern << "[AWS" pattern << ":service" pattern << ":http_response_status" pattern << ":duration]" pattern << ":operation" pattern << ":error_class" LogFormatter.new(pattern.join(' ') + "\n") end |
Instance Method Details
#format(response) ⇒ String
168 169 170 |
# File 'lib/aws/core/log_formatter.rb', line 168 def format response pattern.gsub(/:(\w+)/) {|sym| send("_#{sym[1..-1]}", response) } end |