log fatal errors that we catch
In case we rescue from a fatal error, we want the error and the backtrace to the error logged, so we can debug later on. This change injects the configured logger from the rails app to the grape API and logs error as well as backtrace in a rails-like fashion.
This commit is contained in:
parent
2a669fc899
commit
c72910a8bf
2 changed files with 11 additions and 1 deletions
|
@ -8,6 +8,7 @@ Gitlab::Application.routes.draw do
|
|||
|
||||
# API
|
||||
require 'api'
|
||||
Gitlab::API.logger Rails.logger
|
||||
mount Gitlab::API => '/api'
|
||||
|
||||
constraint = lambda { |request| request.env["warden"].authenticate? and request.env['warden'].user.admin? }
|
||||
|
|
11
lib/api.rb
11
lib/api.rb
|
@ -8,7 +8,16 @@ module Gitlab
|
|||
rack_response({'message' => '404 Not found'}.to_json, 404)
|
||||
end
|
||||
|
||||
rescue_from :all do
|
||||
rescue_from :all do |exception|
|
||||
# lifted from https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/middleware/debug_exceptions.rb#L60
|
||||
# why is this not wrapped in something reusable?
|
||||
trace = exception.backtrace
|
||||
|
||||
message = "\n#{exception.class} (#{exception.message}):\n"
|
||||
message << exception.annoted_source_code.to_s if exception.respond_to?(:annoted_source_code)
|
||||
message << " " << trace.join("\n ")
|
||||
|
||||
API.logger.add Logger::FATAL, message
|
||||
rack_response({'message' => '500 Internal Server Error'}, 500)
|
||||
end
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue