diff --git a/http/webconfig_server.go b/http/webconfig_server.go index 3ccd629..0da72bf 100644 --- a/http/webconfig_server.go +++ b/http/webconfig_server.go @@ -613,6 +613,10 @@ func (s *WebconfigServer) TestingCpeMiddleware(next http.Handler) http.Handler { return http.HandlerFunc(fn) } +func isConfigEndpoint(r *http.Request) bool { + return r.URL.Path == "/config" +} + func (s *WebconfigServer) VerifyApiToken(tokenStr string) (bool, error) { if s.JwksEnabled() { if _, err := s.JwksManager.VerifyApiToken(tokenStr); err != nil { @@ -970,7 +974,9 @@ func (s *WebconfigServer) logRequestStarts(w http.ResponseWriter, r *http.Reques } tfields := common.FilterLogFields(fields) - log.WithFields(tfields).Info("Request started") + if !isConfigEndpoint(r) { + log.WithFields(tfields).Info("Request started") + } xwriter.LogDebug(r, "tracing", fmt.Sprintf("Trace final out_traceparent %s out_traceState %s", xpcTrace.OutTraceparent, xpcTrace.OutTracestate)) return xwriter @@ -1058,7 +1064,9 @@ func (s *WebconfigServer) logRequestEnds(xw *XResponseWriter, r *http.Request) { s.XpcTracer.SetSpan(fields, s.XpcTracer.MoracideTagPrefix()) tfields := common.FilterLogFields(fields) - log.WithFields(tfields).Info("Request finished") + if !isConfigEndpoint(r) { + log.WithFields(tfields).Info("Request finished") + } } func LogError(w http.ResponseWriter, err error) { diff --git a/http/webconfig_server_test.go b/http/webconfig_server_test.go index 52d093f..92d3e1a 100644 --- a/http/webconfig_server_test.go +++ b/http/webconfig_server_test.go @@ -19,8 +19,10 @@ package http import ( "net/http" + "strings" "testing" + log "github.com/sirupsen/logrus" "gotest.tools/assert" ) @@ -55,6 +57,39 @@ func TestConfigEndpointRequiresApiTokenWhenEnabled(t *testing.T) { assert.Equal(t, res.StatusCode, http.StatusForbidden) } +func TestApiMiddlewareSuppressesConfigRequestLogs(t *testing.T) { + server := NewWebconfigServer(sc, true) + server.SetConfigApiTokenAuthEnabled(true) + router := server.GetRouter(false) + + var logs strings.Builder + previousOutput := log.StandardLogger().Out + previousLevel := log.StandardLogger().Level + log.SetOutput(&logs) + log.SetLevel(log.InfoLevel) + defer func() { + log.SetOutput(previousOutput) + log.SetLevel(previousLevel) + }() + + req, err := http.NewRequest("GET", "/config", nil) + assert.NilError(t, err) + res := ExecuteRequest(req, router).Result() + assert.Equal(t, res.StatusCode, http.StatusForbidden) + assert.Assert(t, !strings.Contains(logs.String(), "Request started")) + assert.Assert(t, !strings.Contains(logs.String(), "Request finished")) + + logs.Reset() + req, err = http.NewRequest("GET", "/other", nil) + assert.NilError(t, err) + res = ExecuteRequest(req, server.ApiMiddleware(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusOK) + }))).Result() + assert.Equal(t, res.StatusCode, http.StatusForbidden) + assert.Assert(t, strings.Contains(logs.String(), "Request started")) + assert.Assert(t, strings.Contains(logs.String(), "Request finished")) +} + func TestWebconfigServerSetterGetter(t *testing.T) { server := NewWebconfigServer(sc, true)