2025-05-21 12:39:40 +07:00

36 lines
752 B
Go

package middleware
import (
"time"
"github.com/gin-gonic/gin"
"github.com/google/uuid"
"starter-kit/internal/helper/logger"
)
// Logger middleware for logging HTTP requests
func Logger() gin.HandlerFunc {
return func(c *gin.Context) {
// Generate request ID
requestID := uuid.New().String()
c.Set("RequestID", requestID)
// Start timer
start := time.Now()
// Process request
c.Next()
// Log request details
logger.WithFields(logger.Fields{
"request_id": requestID,
"method": c.Request.Method,
"path": c.Request.URL.Path,
"status": c.Writer.Status(),
"latency": time.Since(start).String(),
"client_ip": c.ClientIP(),
"user_agent": c.Request.UserAgent(),
}).Info("HTTP Request")
}
}