def log_request_exception(env, exception, options = nil)
return if !env[PASSENGER_TXN_ID]
core = lookup_union_station_core(env)
if core
transaction = core.new_transaction(
env[PASSENGER_APP_GROUP_NAME],
:exceptions,
env[PASSENGER_UNION_STATION_KEY])
begin
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", "")
transaction.message("Request transaction ID: #{request_txn_id}")
transaction.message("Message: #{message}")
transaction.message("Class: #{exception.class.name}")
transaction.message("Backtrace: #{backtrace_string}")
if options && options[:controller_name]
if options[:action_name]
controller_action = "#{options[:controller_name]}##{options[:action_name]}"
else
controller_action = controller_name
end
transaction.message("Controller action: #{controller_action}")
end
ensure
transaction.close
end
end
end