class DetailParser::LogSubscriber

Public Instance Methods

logger() click to toggle source
Calls superclass method
# File lib/detail_parser/log_subscriber.rb, line 30
def logger
  DetailParser.logger.presence || super
end
process_action(event) click to toggle source
# File lib/detail_parser/log_subscriber.rb, line 11
def process_action(event)
  payload = event.payload
  request_data = extract_request(event, payload)
  request_log(request_data)
  response_log(extract_response(event, payload)) unless html_format?(payload)
end
request_log(data) click to toggle source
# File lib/detail_parser/log_subscriber.rb, line 18
def request_log(data)
  logger.send(DetailParser.log_level, data)
end
response_log(data) click to toggle source
# File lib/detail_parser/log_subscriber.rb, line 22
def response_log(data)
  logger.send(DetailParser.log_level, data)
end
start_log(data) click to toggle source
# File lib/detail_parser/log_subscriber.rb, line 26
def start_log(data)
  logger.send(DetailParser.log_level, data)
end

Private Instance Methods

before_format(data, payload) click to toggle source
# File lib/detail_parser/log_subscriber.rb, line 97
def before_format(data, payload)
  DetailParser.before_format(data, payload)
end
extract_format(payload) click to toggle source
# File lib/detail_parser/log_subscriber.rb, line 71
def extract_format(payload)
  payload[:format]
end
extract_path(payload) click to toggle source
# File lib/detail_parser/log_subscriber.rb, line 65
def extract_path(payload)
  path = payload[:path]
  index = path.index('?')
  index ? path[0, index] : path
end
extract_request(event, payload) click to toggle source
# File lib/detail_parser/log_subscriber.rb, line 35
def extract_request(event, payload)
  payload = event.payload
  data = initial_data(payload)
  data.merge!(extract_status(payload))
  data.merge!(extract_runtimes(event, payload))
  data.merge!(extract_userinfo(payload))
end
extract_response(event, payload) click to toggle source
# File lib/detail_parser/log_subscriber.rb, line 43
def extract_response(event, payload)
  "Response is #{payload[:response].body}"
end
extract_runtimes(event, payload) click to toggle source
# File lib/detail_parser/log_subscriber.rb, line 86
def extract_runtimes(event, payload)
  data = { duration: event.duration.to_f.round(2) }
  data[:Views] = 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)
  data
end
extract_status(payload) click to toggle source
# File lib/detail_parser/log_subscriber.rb, line 75
def extract_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
extract_userinfo(payload) click to toggle source
# File lib/detail_parser/log_subscriber.rb, line 93
def extract_userinfo(payload)
  {request_user: payload[:current_user]} if DetailParser.detail_config.current_user
end
format_time() click to toggle source
# File lib/detail_parser/log_subscriber.rb, line 47
def format_time
  Time.current.localtime
end
get_error_status_code(exception) click to toggle source
# File lib/detail_parser/log_subscriber.rb, line 101
def get_error_status_code(exception)
  status = ActionDispatch::ExceptionWrapper.rescue_responses[exception]
  Rack::Utils.status_code(status)
end
html_format?(payload) click to toggle source
# File lib/detail_parser/log_subscriber.rb, line 107
def html_format?(payload)
  payload[:format].to_s == "html"
end
initial_data(payload) click to toggle source
# File lib/detail_parser/log_subscriber.rb, line 51
def initial_data(payload)
  {
    method: payload[:method],
    request_id: payload[:request].uuid,
    path: extract_path(payload),
    format: extract_format(payload),
    params: payload[:params]
  }
end
logged_ip() click to toggle source
# File lib/detail_parser/log_subscriber.rb, line 61
def logged_ip
  Thread.current[:logged_ip]
end