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-west-1', 'us-west-2', 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.
123 124 125 126 |
# File 'lib/aws/core/log_formatter.rb', line 123 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)
148 149 150 151 152 153 154 |
# File 'lib/aws/core/log_formatter.rb', line 148 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)
132 133 134 |
# File 'lib/aws/core/log_formatter.rb', line 132 def max_string_size @max_string_size end |
#pattern ⇒ String (readonly)
129 130 131 |
# File 'lib/aws/core/log_formatter.rb', line 129 def pattern @pattern end |
Class Method Details
.colored ⇒ LogFormatter
The default log format with ANSI colors.
404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 |
# File 'lib/aws/core/log_formatter.rb', line 404 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.
355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 |
# File 'lib/aws/core/log_formatter.rb', line 355 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.
293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 |
# File 'lib/aws/core/log_formatter.rb', line 293 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.
318 319 320 321 322 323 324 325 326 327 328 329 330 |
# File 'lib/aws/core/log_formatter.rb', line 318 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
136 137 138 |
# File 'lib/aws/core/log_formatter.rb', line 136 def format response pattern.gsub(/:(\w+)/) {|sym| send("_#{sym[1..-1]}", response) } end |