class Rack::ActionLogger::Metrics::RackMetrics
Constants
- EXCLUDE_PATH_PREFIX
- METRICS
- RACK_TAG_PREFIX
Attributes
status_code[R]
Public Class Methods
new(env, status_code, headers, body)
click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 16 def initialize(env, status_code, headers, body) @env = env @status_code = status_code @headers = headers @body = body @request = Rack::Request.new(env) @response = Rack::Response.new(body, status_code, headers) @ua = Woothee.parse(@request.user_agent) end
Public Instance Methods
action_controller()
click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 65 def action_controller @env['action_controller.instance'] end
browser()
click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 93 def browser @ua[:name] end
browser_version()
click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 97 def browser_version @ua[:version] end
content_type()
click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 69 def content_type @response.content_type end
device()
click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 85 def device @ua[:category] end
enable_metrics()
click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 61 def enable_metrics Rack::ActionLogger.configuration.rack_content_types.any? { |c| content_type.to_s.include?(c) } || action_controller end
ip()
click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 77 def ip @request.ip end
method()
click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 49 def method @request.request_method end
metrics()
click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 36 def metrics return unless enable_metrics METRICS.inject({}) do |result, metric| result[metric] = self.send(metric) unless Rack::ActionLogger.configuration.rack_request_blacklist.include? metric result end end
os()
click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 89 def os @ua[:os] end
params()
click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 53 def params Rack::ActionLogger::ParameterFiltering.apply_filter(@request.params) end
path()
click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 45 def path @request.path end
remote_ip()
click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 73 def remote_ip @env['action_dispatch.remote_ip'] end
request_headers()
click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 57 def request_headers @env.select { |v| v.start_with? 'HTTP_' } end
request_id()
click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 101 def request_id @env['action_dispatch.request_id'] end
response_headers()
click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 105 def response_headers @headers end
response_json_body()
click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 109 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) end
tag_suffix()
click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 26 def tag_suffix return RACK_TAG_PREFIX if Rack::ActionLogger.configuration.rack_unified_tag if @status_code == 404 tags = ['not_found'] else tags = URI(path).path.split('/').reject { |c| c.empty? } end (Array(RACK_TAG_PREFIX) + tags).join('.') end
user_agent()
click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 81 def user_agent @request.user_agent end