Fix open-ended params for api_json.log

This commit is contained in:
Andrew Newdigate 2018-10-29 13:44:09 +00:00 committed by Sean McGivern
parent fb8e972959
commit 9a25cfc80b
3 changed files with 15 additions and 2 deletions

View file

@ -0,0 +1,5 @@
---
title: Use key-value pair arrays for API query parameter logging instead of hashes
merge_request: 22623
author:
type: other

View file

@ -84,7 +84,7 @@ Introduced in GitLab 10.0, this file lives in
It helps you see requests made directly to the API. For example:
```json
{"time":"2017-10-10T12:30:11.579Z","severity":"INFO","duration":16.84,"db":1.57,"view":15.27,"status":200,"method":"POST","path":"/api/v4/internal/allowed","params":{"action":"git-upload-pack","changes":"_any","gl_repository":null,"project":"root/foobar.git","protocol":"ssh","env":"{}","key_id":"[FILTERED]","secret_token":"[FILTERED]"},"host":"127.0.0.1","ip":"127.0.0.1","ua":"Ruby"}
{"time":"2018-10-29T12:49:42.123Z","severity":"INFO","duration":709.08,"db":14.59,"view":694.49,"status":200,"method":"GET","path":"/api/v4/projects","params":[{"key":"action","value":"git-upload-pack"},{"key":"changes","value":"_any"},{"key":"key_id","value":"secret"},{"key":"secret_token","value":"[FILTERED]"}],"host":"localhost","ip":"::1","ua":"Ruby","route":"/api/:version/projects","user_id":1,"username":"root","queue_duration":100.31,"gitaly_calls":30}
```
This entry above shows an access to an internal endpoint to check whether an

View file

@ -6,7 +6,7 @@ module Gitlab
def call(severity, datetime, _, data)
time = data.delete :time
data[:params] = utf8_encode_values(data[:params]) if data.has_key?(:params)
data[:params] = process_params(data)
attributes = {
time: datetime.utc.iso8601(3),
@ -20,6 +20,14 @@ module Gitlab
private
def process_params(data)
return [] unless data.has_key?(:params)
data[:params]
.each_pair
.map { |k, v| { key: k, value: utf8_encode_values(v) } }
end
def utf8_encode_values(data)
case data
when Hash