34 lines
577 B
Go
34 lines
577 B
Go
package middleware
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/gofiber/fiber/v3"
|
|
"github.com/gofiber/fiber/v3/log"
|
|
)
|
|
|
|
func Logger() fiber.Handler {
|
|
return func(c fiber.Ctx) error {
|
|
ctx := context.WithValue(c.Context(), "request_id", c.RequestID())
|
|
c.SetContext(ctx)
|
|
|
|
start := time.Now()
|
|
|
|
err := c.Next()
|
|
|
|
duration := time.Since(start)
|
|
|
|
// 记录日志
|
|
log.WithContext(c.Context()).Infow("API Request",
|
|
"method", c.Method(),
|
|
"path", c.Path(),
|
|
"status", c.Response().StatusCode(),
|
|
"duration", duration.String(),
|
|
"ip", c.IP(),
|
|
)
|
|
|
|
return err
|
|
}
|
|
}
|