summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2018-09-05 20:46:22 +0000
committerStan Hu <stanhu@gmail.com>2018-09-05 20:46:22 +0000
commit9dd34eac14a94e58999c335a175e06067f1092fa (patch)
treebcf98684fb3b2091c1cbaeb1552ff3b04637d9de
parentc903fcd56441c4c3e8e487f1fb20bb4fe60bf1a3 (diff)
parent189b063ee15d3751fb7b03a0794edfdb60893eb8 (diff)
downloadgitlab-ce-9dd34eac14a94e58999c335a175e06067f1092fa.tar.gz
Merge branch 'an/api-route-logger' into 'master'
Add route information to lograge structured logging for API logs Closes #50993 See merge request gitlab-org/gitlab-ce!21487
-rw-r--r--changelogs/unreleased/an-api-route-logger.yml5
-rw-r--r--lib/api/api.rb1
-rw-r--r--lib/gitlab/grape_logging/loggers/route_logger.rb25
3 files changed, 31 insertions, 0 deletions
diff --git a/changelogs/unreleased/an-api-route-logger.yml b/changelogs/unreleased/an-api-route-logger.yml
new file mode 100644
index 00000000000..cca3ef44f36
--- /dev/null
+++ b/changelogs/unreleased/an-api-route-logger.yml
@@ -0,0 +1,5 @@
+---
+title: Add route information to lograge structured logging for API logs
+merge_request: 21487
+author:
+type: other
diff --git a/lib/api/api.rb b/lib/api/api.rb
index 850cef26449..843f75d3096 100644
--- a/lib/api/api.rb
+++ b/lib/api/api.rb
@@ -15,6 +15,7 @@ module API
include: [
GrapeLogging::Loggers::FilterParameters.new,
GrapeLogging::Loggers::ClientEnv.new,
+ Gitlab::GrapeLogging::Loggers::RouteLogger.new,
Gitlab::GrapeLogging::Loggers::UserLogger.new,
Gitlab::GrapeLogging::Loggers::QueueDurationLogger.new,
Gitlab::GrapeLogging::Loggers::PerfLogger.new
diff --git a/lib/gitlab/grape_logging/loggers/route_logger.rb b/lib/gitlab/grape_logging/loggers/route_logger.rb
new file mode 100644
index 00000000000..f3146b4dfd9
--- /dev/null
+++ b/lib/gitlab/grape_logging/loggers/route_logger.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+# This grape_logging module (https://github.com/aserafin/grape_logging) makes it
+# possible to log the details of the action
+module Gitlab
+ module GrapeLogging
+ module Loggers
+ class RouteLogger < ::GrapeLogging::Loggers::Base
+ def parameters(request, _)
+ endpoint = request.env[Grape::Env::API_ENDPOINT]
+ route = endpoint&.route&.pattern&.origin
+
+ return {} unless route
+
+ { route: route }
+ rescue
+ # endpoint.route calls env[Grape::Env::GRAPE_ROUTING_ARGS][:route_info]
+ # but env[Grape::Env::GRAPE_ROUTING_ARGS] is nil in the case of a 405 response
+ # so we're rescuing exceptions and bailing out
+ {}
+ end
+ end
+ end
+ end
+end