class RestashRails::LogSubscriber::ActiveSupport

Public Instance Methods

logger() click to toggle source
# File lib/restash_rails/log_subscriber/subscribers/active_support.rb, line 23
def logger
  ::RestashRails.logger
end
process_action(event) click to toggle source
# File lib/restash_rails/log_subscriber/subscribers/active_support.rb, line 7
def process_action(event)
  log_message = generate_message(event)
  if log_message[:response_code] >= 500
    logger.error(log_message)
  elsif log_message[:response_code] >= 400
    logger.warn(log_message)
  else
    logger.info(log_message)
  end
end
redirect_to(event) click to toggle source
# File lib/restash_rails/log_subscriber/subscribers/active_support.rb, line 18
def redirect_to(event)
  log_message = generate_message(event)
  logger.info (log_message)
end

Private Instance Methods

exception_formatter(payload) click to toggle source
# File lib/restash_rails/log_subscriber/subscribers/active_support.rb, line 29
def exception_formatter(payload)
  return {} unless payload[:exception].present?
  if payload[:exception].is_a?(Array)
    exception_class, exception_message = payload[:exception]
    { class: exception_class, message: exception_message }
  else
    { exception_string: payload[:exception].to_s }
  end
end
extract_status(payload) click to toggle source
# File lib/restash_rails/log_subscriber/subscribers/active_support.rb, line 40
def extract_status(payload)
  if (status = payload[:status])
    status.to_i
  elsif (error = payload[:exception])
    exception, message = error
    get_error_status_code(exception)
  else
    200
  end
end
generate_message(event) click to toggle source
# File lib/restash_rails/log_subscriber/subscribers/active_support.rb, line 56
def generate_message(event)
  payload = event.payload
  excepted_params = %w(controller action format id)
  {
      controller: payload[:controller].to_s,
      action: payload[:action].to_s,
      request_method: payload[:method].to_s,
      uuid: payload[:request_id],
      response_code: extract_status(payload),
      path: payload[:path].to_s,
      format: payload[:format].to_s,
      request_params: (payload[:params].except(*excepted_params).to_json rescue 'failed to jsonify request_params'),
      duration: event.duration.to_f.round(2),
      redirect_to: payload[:location] || '',
      db_duration: ((payload[:db_runtime] * 100).round(2)/100.0 rescue 0.0),
      view_duration: ((payload[:view_runtime] * 100).round(2)/100.0 rescue 0.0),
      log_tag: :action_controller,
      exception: exception_formatter(payload)
  }
end
get_error_status_code(exception) click to toggle source
# File lib/restash_rails/log_subscriber/subscribers/active_support.rb, line 51
def get_error_status_code(exception)
  status = ::ActionDispatch::ExceptionWrapper.rescue_responses[exception]
  ::Rack::Utils.status_code(status)
end