def log_analytics_exception(env, exception)
log = @analytics_logger.new_transaction(
@app_group_name,
:exceptions,
env[PASSENGER_UNION_STATION_KEY])
begin
request = ActionDispatch::Request.new(env)
if request.parameters['controller']
controller = request.parameters['controller'].humanize + "Controller"
action = request.parameters['action']
end
request_txn_id = env[PASSENGER_TXN_ID]
message = exception.message
message = exception.to_s if message.empty?
message = [message].pack('m')
message.gsub!("\n", "")
backtrace_string = [exception.backtrace.join("\n")].pack('m')
backtrace_string.gsub!("\n", "")
if action && controller
controller_action = "#{controller}##{action}"
else
controller_action = controller
end
log.message("Request transaction ID: #{request_txn_id}")
log.message("Message: #{message}")
log.message("Class: #{exception.class.name}")
log.message("Backtrace: #{backtrace_string}")
log.message("Controller action: #{controller_action}") if controller_action
ensure
log.close
end
end