44 lines
880 B
Go
Raw Normal View History

2023-10-08 15:59:42 +07:00
package middlewares
import (
"fmt"
"time"
"github.com/gin-gonic/gin"
"furtuna-be/internal/common/request"
)
2024-08-10 23:52:09 +07:00
type ConfigLogger interface {
IsLoggerEnabled() bool
}
func Logger(c ConfigLogger) gin.HandlerFunc {
if !c.IsLoggerEnabled() {
return func(ctx *gin.Context) {
ctx.Next()
}
}
2023-10-08 15:59:42 +07:00
return gin.LoggerWithFormatter(func(param gin.LogFormatterParams) string {
var parsedReqInfo request.RequestInfo
2024-08-10 23:52:09 +07:00
if reqInfo, exists := param.Keys[request.ReqInfoKey]; exists {
if castedReqInfo, ok := reqInfo.(request.RequestInfo); ok {
parsedReqInfo = castedReqInfo
}
2023-10-08 15:59:42 +07:00
}
2024-08-10 23:52:09 +07:00
return fmt.Sprintf(
"%s - [HTTP] TraceId: %s; UserId: %d; Method: %s; Path: %s; Status: %d; Latency: %s;\n\n",
2023-10-08 15:59:42 +07:00
param.TimeStamp.Format(time.RFC1123),
parsedReqInfo.TraceId,
parsedReqInfo.UserId,
param.Method,
param.Path,
param.StatusCode,
param.Latency,
)
})
}