Sha256: 1734c76bc421aedcdef9c1fc2ceea5d72b1d81f19f502cb7852c5cd0bb0b0d4f
Contents?: true
Size: 1.76 KB
Versions: 2
Compression:
Stored size: 1.76 KB
Contents
module Hickory module LogSubscribers class ActionController < ActiveSupport::LogSubscriber def process_action(event) return if Hickory.ignore_if.present? && Hickory.ignore_if.call(event) payload = event.payload default_keys = %i[method format controller action user_id request_id] metadata = payload.slice(default_keys).tap { |data| data.merge!(uri(payload)) data.merge!(runtimes(event, payload)) data.merge!(status(payload)) data.merge!(params(payload)) } logger.info('canoncial-request', metadata) end private def uri(payload) return {} unless payload.key?(:path) _uri = URI.parse(payload[:path]) { path: _uri.path }.tap { |data| data[:query] = _uri.query unless _uri.query.nil? } end def runtimes(event, payload) { duration: event.duration.to_f.round(2) }.tap { |data| data[:view] = payload[:view_runtime].to_f.round(2) if payload.key?(:view_runtime) data[:db] = payload[:db_runtime].to_f.round(2) if payload.key?(:db_runtime) } end def status(payload) if status = payload[:status] { status: status.to_i } elsif error = payload[:exception] exception, message = error { status: get_error_status_code(exception), error: "#{exception}: #{message}" } else { status: 0 } end end def params(payload) { params: payload[:params].except(:controller, :action, :format) } end def get_error_status_code(exception) status = ActionDispatch::ExceptionWrapper.rescue_responses[exception] Rack::Utils.status_code(status) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
hickory-0.1.1 | lib/hickory/log_subscribers/action_controller.rb |
hickory-0.1.0 | lib/hickory/log_subscribers/action_controller.rb |