36 lines
875 B
Go
Raw Normal View History

2025-07-18 20:10:29 +07:00
package middleware
import (
"apskel-pos-be/internal/constants"
"apskel-pos-be/internal/logger"
"fmt"
"github.com/gin-gonic/gin"
"net/http"
"time"
)
func HTTPStatLogger() gin.HandlerFunc {
return func(c *gin.Context) {
if c.Request.URL.Path == "/health" {
c.Next()
return
}
start := time.Now()
c.Next()
duration := time.Since(start)
status := c.Writer.Status()
log := logger.NewContextLogger(c, "HTTPStatLogger")
log.Infof("CompletedHTTPRequest %v", map[string]string{
constants.RequestMethod: c.Request.Method,
constants.RequestPath: c.Request.URL.Path,
constants.RequestURLQueryParam: c.Request.URL.RawQuery,
constants.ResponseStatusCode: fmt.Sprintf("%d", status),
constants.ResponseStatusText: http.StatusText(status),
constants.ResponseTimeTaken: fmt.Sprintf("%f", duration.Seconds()),
})
}
}