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