2025-06-05 21:21:28 +07:00

44 lines
991 B
Go

package middleware
import (
"github.com/gin-gonic/gin"
"time"
)
// Logger là một middleware đơn giản để ghi log các request
func Logger() gin.HandlerFunc {
return func(c *gin.Context) {
// Ghi thời gian bắt đầu xử lý request
start := time.Now()
// Xử lý request
c.Next()
// Tính thời gian xử lý
latency := time.Since(start)
// Lấy thông tin response
status := c.Writer.Status()
method := c.Request.Method
path := c.Request.URL.Path
// Ghi log
logMessage := "[GIN] " + time.Now().Format("2006/01/02 - 15:04:05") +
" | " + method +
" | " + path +
" | " + latency.String() +
" | " + c.ClientIP() +
" | " + c.Request.UserAgent()
if status >= 400 {
// Log lỗi
logMessage += " | " + c.Errors.ByType(gin.ErrorTypePrivate).String()
_, _ = gin.DefaultErrorWriter.Write([]byte(logMessage + "\n"))
} else {
// Log thông thường
_, _ = gin.DefaultWriter.Write([]byte(logMessage + "\n"))
}
}
}