From 4a974eabeaf48b5dd2ff5c0f8c539336e51ec2be Mon Sep 17 00:00:00 2001 From: Mario de Frutos Dieguez Date: Fri, 19 Jun 2020 16:34:49 +0200 Subject: [PATCH] Include response log trace (#14841) Include the status_code in the log trace --- web/handlers.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/web/handlers.go b/web/handlers.go index b0d0d608df..18f66ec7a1 100644 --- a/web/handlers.go +++ b/web/handlers.go @@ -86,7 +86,19 @@ func (h Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { now := time.Now() requestID := model.NewId() - mlog.Debug("Received HTTP request", mlog.String("method", r.Method), mlog.String("url", r.URL.Path), mlog.String("request_id", requestID)) + var statusCode string + defer func() { + responseLogFields := []mlog.Field{ + mlog.String("method", r.Method), + mlog.String("url", r.URL.Path), + mlog.String("request_id", requestID), + } + // Websockets are returning status code 0 to requests after closing the socket + if statusCode != "0" { + responseLogFields = append(responseLogFields, mlog.String("status_code", statusCode)) + } + mlog.Debug("Received HTTP request", responseLogFields...) + }() c := &Context{} c.App = app.New( @@ -268,12 +280,12 @@ func (h Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { } } + statusCode = strconv.Itoa(w.(*responseWriterWrapper).StatusCode()) if c.App.Metrics() != nil { c.App.Metrics().IncrementHttpRequest() if r.URL.Path != model.API_URL_SUFFIX+"/websocket" { elapsed := float64(time.Since(now)) / float64(time.Second) - statusCode := strconv.Itoa(w.(*responseWriterWrapper).StatusCode()) c.App.Metrics().ObserveApiEndpointDuration(h.HandlerName, r.Method, statusCode, elapsed) } }