Commit 7e19b5bf authored by Sean McGivern's avatar Sean McGivern

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
parents 66f08aad 35dec2c3
...@@ -407,3 +407,4 @@ gem 'flipper-active_record', '~> 0.10.2' ...@@ -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 ...@@ -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 ...@@ -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
......
---
title: Add JSON logger in `log/api_json.log` for Grape API endpoints
merge_request:
author:
type: added
...@@ -2,6 +2,17 @@ module API ...@@ -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
......
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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment