Class: Rack::ActionLogger::Metrics::RackMetrics
- Inherits:
-
Object
- Object
- Rack::ActionLogger::Metrics::RackMetrics
- Defined in:
- lib/rack/action_logger/metrics/rack_metrics.rb
Constant Summary collapse
- METRICS =
[ :path, :method, :params, :request_headers, :status_code, :remote_ip, :user_agent, :device, :os, :browser, :browser_version, :request_id, :response_headers, :response_json_body, ]
- RACK_TAG_PREFIX =
'rack'
Instance Attribute Summary collapse
-
#status_code ⇒ Object
readonly
Returns the value of attribute status_code.
Instance Method Summary collapse
- #browser ⇒ Object
- #browser_version ⇒ Object
- #device ⇒ Object
-
#initialize(env, status_code, headers, body) ⇒ RackMetrics
constructor
A new instance of RackMetrics.
- #method ⇒ Object
- #metrics ⇒ Object
- #os ⇒ Object
- #params ⇒ Object
- #path ⇒ Object
- #remote_ip ⇒ Object
- #request_headers ⇒ Object
- #request_id ⇒ Object
- #response_headers ⇒ Object
- #response_json_body ⇒ Object
- #tag_suffix ⇒ Object
- #user_agent ⇒ Object
Constructor Details
#initialize(env, status_code, headers, body) ⇒ RackMetrics
Returns a new instance of RackMetrics.
15 16 17 18 19 20 21 22 23 24 |
# File 'lib/rack/action_logger/metrics/rack_metrics.rb', line 15 def initialize(env, status_code, headers, body) @env = env @status_code = status_code @headers = headers @body = body @request = Rack::Request.new(env) @ua = Woothee.parse(@request.user_agent) filters = Rack::ActionLogger.configuration.filters @compiled_filters = Rack::ActionLogger::ParameterFiltering.compile(filters) end |
Instance Attribute Details
#status_code ⇒ Object (readonly)
Returns the value of attribute status_code.
13 14 15 |
# File 'lib/rack/action_logger/metrics/rack_metrics.rb', line 13 def status_code @status_code end |
Instance Method Details
#browser ⇒ Object
75 76 77 |
# File 'lib/rack/action_logger/metrics/rack_metrics.rb', line 75 def browser @ua[:name] end |
#browser_version ⇒ Object
79 80 81 |
# File 'lib/rack/action_logger/metrics/rack_metrics.rb', line 79 def browser_version @ua[:version] end |
#device ⇒ Object
67 68 69 |
# File 'lib/rack/action_logger/metrics/rack_metrics.rb', line 67 def device @ua[:category] end |
#method ⇒ Object
47 48 49 |
# File 'lib/rack/action_logger/metrics/rack_metrics.rb', line 47 def method @request.request_method end |
#metrics ⇒ Object
35 36 37 38 39 40 41 |
# File 'lib/rack/action_logger/metrics/rack_metrics.rb', line 35 def metrics METRICS.inject({}) do |result, metric| result[metric] = self.send(metric) unless Rack::ActionLogger.configuration.rack_request_blacklist.include? metric result end end |
#os ⇒ Object
71 72 73 |
# File 'lib/rack/action_logger/metrics/rack_metrics.rb', line 71 def os @ua[:os] end |
#params ⇒ Object
51 52 53 |
# File 'lib/rack/action_logger/metrics/rack_metrics.rb', line 51 def params Rack::ActionLogger::ParameterFiltering.apply_filter(@request.params, @compiled_filters) end |
#path ⇒ Object
43 44 45 |
# File 'lib/rack/action_logger/metrics/rack_metrics.rb', line 43 def path @request.path end |
#remote_ip ⇒ Object
59 60 61 |
# File 'lib/rack/action_logger/metrics/rack_metrics.rb', line 59 def remote_ip @request.ip end |
#request_headers ⇒ Object
55 56 57 |
# File 'lib/rack/action_logger/metrics/rack_metrics.rb', line 55 def request_headers @env.select { |v| v.start_with? 'HTTP_' } end |
#request_id ⇒ Object
83 84 85 |
# File 'lib/rack/action_logger/metrics/rack_metrics.rb', line 83 def request_id @env['action_dispatch.request_id'] end |
#response_headers ⇒ Object
87 88 89 |
# File 'lib/rack/action_logger/metrics/rack_metrics.rb', line 87 def response_headers @headers end |
#response_json_body ⇒ Object
91 92 93 94 95 96 |
# File 'lib/rack/action_logger/metrics/rack_metrics.rb', line 91 def response_json_body response_bodies = [] @body.each { |part| response_bodies << part } if @body result = JSON.parse(response_bodies.join('')) rescue {} Rack::ActionLogger::ParameterFiltering.apply_filter(result, @compiled_filters) end |
#tag_suffix ⇒ Object
26 27 28 29 30 31 32 33 |
# File 'lib/rack/action_logger/metrics/rack_metrics.rb', line 26 def tag_suffix if @status_code == 404 = ['not_found'] else = URI(path).path.split('/').reject { |c| c.empty? } end (Array(RACK_TAG_PREFIX) + ).join('.') end |
#user_agent ⇒ Object
63 64 65 |
# File 'lib/rack/action_logger/metrics/rack_metrics.rb', line 63 def user_agent @request.user_agent end |