diff options
author | Stan Hu <stanhu@gmail.com> | 2017-09-06 22:41:15 -0700 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2017-09-06 23:09:27 -0700 |
commit | f7c8032e0993a6dc6bb808b0f2234324d3fe9707 (patch) | |
tree | cd74468cc14fc1955feb0faf705e9d78a4e55e97 | |
parent | 21935d85382989e38dd4cc12de55966e0c9b6eba (diff) | |
download | gitlab-ce-f7c8032e0993a6dc6bb808b0f2234324d3fe9707.tar.gz |
Add JSON logger in `log/api_json.log` for Grape API endpoints
Closes #36189
-rw-r--r-- | Gemfile | 1 | ||||
-rw-r--r-- | Gemfile.lock | 3 | ||||
-rw-r--r-- | changelogs/unreleased/sh-add-grape-logging.yml | 5 | ||||
-rw-r--r-- | lib/api/api.rb | 9 | ||||
-rw-r--r-- | lib/gitlab/api_logger.rb | 8 |
5 files changed, 26 insertions, 0 deletions
@@ -407,3 +407,4 @@ gem 'flipper-active_record', '~> 0.10.2' # Structured logging gem 'lograge', '~> 0.5' +gem 'grape_logging', '~> 1.6' diff --git a/Gemfile.lock b/Gemfile.lock index 320d42b8974..9fc47bbf848 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -355,6 +355,8 @@ GEM activesupport grape (>= 0.16.0) rake + grape_logging (1.6.0) + grape grpc (1.4.5) google-protobuf (~> 3.1) googleauth (~> 0.5.1) @@ -1034,6 +1036,7 @@ DEPENDENCIES grape (~> 1.0) grape-entity (~> 0.6.0) grape-route-helpers (~> 2.1.0) + grape_logging (~> 1.6) haml_lint (~> 0.26.0) hamlit (~> 2.6.1) hashie-forbidden_attributes diff --git a/changelogs/unreleased/sh-add-grape-logging.yml b/changelogs/unreleased/sh-add-grape-logging.yml new file mode 100644 index 00000000000..eaf6cb045d5 --- /dev/null +++ b/changelogs/unreleased/sh-add-grape-logging.yml @@ -0,0 +1,5 @@ +--- +title: Add JSON logger in `log/api_json.log` for Grape API endpoints +merge_request: +author: +type: added diff --git a/lib/api/api.rb b/lib/api/api.rb index 1405a5d0f0e..63df22c508b 100644 --- a/lib/api/api.rb +++ b/lib/api/api.rb @@ -2,6 +2,15 @@ module API class API < Grape::API include APIGuard + LOG_FILENAME = Rails.root.join("log", "api_json.log") + + use GrapeLogging::Middleware::RequestLogger, + logger: ::Gitlab::ApiLogger.new(LOG_FILENAME), + formatter: GrapeLogging::Formatters::Json.new, + include: [ GrapeLogging::Loggers::Response.new, + GrapeLogging::Loggers::FilterParameters.new, + GrapeLogging::Loggers::ClientEnv.new ] + allow_access_with_scope :api prefix :api diff --git a/lib/gitlab/api_logger.rb b/lib/gitlab/api_logger.rb new file mode 100644 index 00000000000..09122b233ea --- /dev/null +++ b/lib/gitlab/api_logger.rb @@ -0,0 +1,8 @@ +module Gitlab + class ApiLogger < ::Logger + + def format_message(severity, timestamp, progname, message) + super + "\n" + end + end +end |