From 86afc1dfeeb07fbc140d08ef8cdcfd8cbd4d7bcb Mon Sep 17 00:00:00 2001 From: Jaime Martinez Date: Wed, 7 Jul 2021 12:19:48 +1000 Subject: Improve logging and correlation ID --- internal/logging/logging.go | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) (limited to 'internal/logging/logging.go') diff --git a/internal/logging/logging.go b/internal/logging/logging.go index 10705a9a..4ffbeb4b 100644 --- a/internal/logging/logging.go +++ b/internal/logging/logging.go @@ -82,23 +82,31 @@ func BasicAccessLogger(handler http.Handler, format string, extraFields log.Extr return nil, err } - if extraFields == nil { - extraFields = func(r *http.Request) log.Fields { - return log.Fields{ - "correlation_id": correlation.ExtractFromContext(r.Context()), - "pages_https": request.IsHTTPS(r), - "pages_host": r.Host, - } - } - } - return log.AccessLogger(handler, - log.WithExtraFields(extraFields), + log.WithExtraFields(enrichExtraFields(extraFields)), log.WithAccessLogger(accessLogger), log.WithXFFAllowed(func(sip string) bool { return false }), ), nil } +func enrichExtraFields(extraFields log.ExtraFieldsGeneratorFunc) log.ExtraFieldsGeneratorFunc { + return func(r *http.Request) log.Fields { + enrichedFields := log.Fields{ + "correlation_id": correlation.ExtractFromContext(r.Context()), + "pages_https": request.IsHTTPS(r), + "pages_host": r.Host, + } + + if extraFields != nil { + for field, value := range extraFields(r) { + enrichedFields[field] = value + } + } + + return enrichedFields + } +} + // AccessLogger configures the GitLab pages HTTP access logger middleware with extra log fields func AccessLogger(handler http.Handler, format string) (http.Handler, error) { return BasicAccessLogger(handler, format, getExtraLogFields) -- cgit v1.2.3