diff --git a/internal/common/http/log.go b/internal/common/http/log.go index 8a0b224..232d9c3 100644 --- a/internal/common/http/log.go +++ b/internal/common/http/log.go @@ -1,24 +1,39 @@ package http import ( + "bytes" "github.com/gin-gonic/gin" "github.com/twofas/2fas-server/internal/common/logging" + "io" ) func RequestJsonLogger() gin.HandlerFunc { return func(c *gin.Context) { - requestLogger := logging.WithFields(logging.Fields{ + var buf bytes.Buffer + + tee := io.TeeReader(c.Request.Body, &buf) + body, _ := io.ReadAll(tee) + + c.Request.Body = io.NopCloser(&buf) + + logging.WithFields(logging.Fields{ + "client_ip": c.ClientIP(), + "method": c.Request.Method, + "path": c.Request.URL.Path, + "headers": c.Request.Header, + "body": string(body), + "request_id": c.GetString(RequestIdKey), + "correlation_id": c.GetString(CorrelationIdKey), + }).Info("Request") + + c.Next() + + logging.WithFields(logging.Fields{ "client_ip": c.ClientIP(), "method": c.Request.Method, "path": c.Request.URL.Path, "request_id": c.GetString(RequestIdKey), "correlation_id": c.GetString(CorrelationIdKey), - }) - - requestLogger.Info("Request") - - c.Next() - - requestLogger.Info("Response") + }).Info("Response") } }