Merge branch 'sh-add-grape-logging' into 'master'
Add JSON logger in `log/api_json.log` for Grape API endpoints Closes #36189 See merge request !14102
This commit is contained in:
commit
7e19b5bfb6
5 changed files with 39 additions and 0 deletions
1
Gemfile
1
Gemfile
|
@ -407,3 +407,4 @@ gem 'flipper-active_record', '~> 0.10.2'
|
||||||
|
|
||||||
# Structured logging
|
# Structured logging
|
||||||
gem 'lograge', '~> 0.5'
|
gem 'lograge', '~> 0.5'
|
||||||
|
gem 'grape_logging', '~> 1.6'
|
||||||
|
|
|
@ -355,6 +355,8 @@ GEM
|
||||||
activesupport
|
activesupport
|
||||||
grape (>= 0.16.0)
|
grape (>= 0.16.0)
|
||||||
rake
|
rake
|
||||||
|
grape_logging (1.6.0)
|
||||||
|
grape
|
||||||
grpc (1.4.5)
|
grpc (1.4.5)
|
||||||
google-protobuf (~> 3.1)
|
google-protobuf (~> 3.1)
|
||||||
googleauth (~> 0.5.1)
|
googleauth (~> 0.5.1)
|
||||||
|
@ -1035,6 +1037,7 @@ DEPENDENCIES
|
||||||
grape (~> 1.0)
|
grape (~> 1.0)
|
||||||
grape-entity (~> 0.6.0)
|
grape-entity (~> 0.6.0)
|
||||||
grape-route-helpers (~> 2.1.0)
|
grape-route-helpers (~> 2.1.0)
|
||||||
|
grape_logging (~> 1.6)
|
||||||
haml_lint (~> 0.26.0)
|
haml_lint (~> 0.26.0)
|
||||||
hamlit (~> 2.6.1)
|
hamlit (~> 2.6.1)
|
||||||
hashie-forbidden_attributes
|
hashie-forbidden_attributes
|
||||||
|
|
5
changelogs/unreleased/sh-add-grape-logging.yml
Normal file
5
changelogs/unreleased/sh-add-grape-logging.yml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
title: Add JSON logger in `log/api_json.log` for Grape API endpoints
|
||||||
|
merge_request:
|
||||||
|
author:
|
||||||
|
type: added
|
|
@ -2,6 +2,17 @@ module API
|
||||||
class API < Grape::API
|
class API < Grape::API
|
||||||
include APIGuard
|
include APIGuard
|
||||||
|
|
||||||
|
LOG_FILENAME = Rails.root.join("log", "api_json.log")
|
||||||
|
|
||||||
|
use GrapeLogging::Middleware::RequestLogger,
|
||||||
|
logger: Logger.new(LOG_FILENAME),
|
||||||
|
formatter: Gitlab::GrapeLogging::Formatters::LogrageWithTimestamp.new,
|
||||||
|
include: [
|
||||||
|
GrapeLogging::Loggers::Response.new,
|
||||||
|
GrapeLogging::Loggers::FilterParameters.new,
|
||||||
|
GrapeLogging::Loggers::ClientEnv.new
|
||||||
|
]
|
||||||
|
|
||||||
allow_access_with_scope :api
|
allow_access_with_scope :api
|
||||||
prefix :api
|
prefix :api
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
module Gitlab
|
||||||
|
module GrapeLogging
|
||||||
|
module Formatters
|
||||||
|
class LogrageWithTimestamp
|
||||||
|
def call(severity, datetime, _, data)
|
||||||
|
time = data.delete :time
|
||||||
|
attributes = {
|
||||||
|
time: datetime.utc.iso8601(3),
|
||||||
|
severity: severity,
|
||||||
|
duration: time[:total],
|
||||||
|
db: time[:db],
|
||||||
|
view: time[:view]
|
||||||
|
}.merge(data)
|
||||||
|
::Lograge.formatter.call(attributes) + "\n"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue