summaryrefslogtreecommitdiff
path: root/lib/api/api.rb
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2018-05-17 23:48:59 -0700
committerStan Hu <stanhu@gmail.com>2018-05-17 23:51:54 -0700
commit6b98033d9120c7dfc5276f623e27e7af22dd7b88 (patch)
tree732fdf915bf1cce184011c7bb3329e966b667d46 /lib/api/api.rb
parent4609a1268de9f15c02899c906cbb9ce27c495ab3 (diff)
downloadgitlab-ce-6b98033d9120c7dfc5276f623e27e7af22dd7b88.tar.gz
Fix api_json.log not always reporting the right HTTP status code
As described in https://github.com/aserafin/grape_logging/issues/45, if a Grape error is caught by the handlers and a different return code is returned, then the api_json.log would have a 500 error code instead of the right value. Inserting the GrapeLogging middleware after the Grape middleware fixes this problem. Seen in https://gitlab.com/gitlab-com/infrastructure/issues/4249
Diffstat (limited to 'lib/api/api.rb')
-rw-r--r--lib/api/api.rb17
1 files changed, 9 insertions, 8 deletions
diff --git a/lib/api/api.rb b/lib/api/api.rb
index 5139e869c71..2fbeaaffcfe 100644
--- a/lib/api/api.rb
+++ b/lib/api/api.rb
@@ -8,14 +8,15 @@ module API
PROJECT_ENDPOINT_REQUIREMENTS = { id: NO_SLASH_URL_PART_REGEX }.freeze
COMMIT_ENDPOINT_REQUIREMENTS = PROJECT_ENDPOINT_REQUIREMENTS.merge(sha: NO_SLASH_URL_PART_REGEX).freeze
- use GrapeLogging::Middleware::RequestLogger,
- logger: Logger.new(LOG_FILENAME),
- formatter: Gitlab::GrapeLogging::Formatters::LogrageWithTimestamp.new,
- include: [
- GrapeLogging::Loggers::FilterParameters.new,
- GrapeLogging::Loggers::ClientEnv.new,
- Gitlab::GrapeLogging::Loggers::UserLogger.new
- ]
+ insert_before Grape::Middleware::Error,
+ GrapeLogging::Middleware::RequestLogger,
+ logger: Logger.new(LOG_FILENAME),
+ formatter: Gitlab::GrapeLogging::Formatters::LogrageWithTimestamp.new,
+ include: [
+ GrapeLogging::Loggers::FilterParameters.new,
+ GrapeLogging::Loggers::ClientEnv.new,
+ Gitlab::GrapeLogging::Loggers::UserLogger.new
+ ]
allow_access_with_scope :api
prefix :api