36 lines
749 B
Go
36 lines
749 B
Go
package middleware
|
|
|
|
import (
|
|
"cn/oneao/base-go/logx"
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/cloudwego/hertz/pkg/app"
|
|
"github.com/hertz-contrib/requestid"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
func Log() app.HandlerFunc {
|
|
return func(c context.Context, ctx *app.RequestContext) {
|
|
reqId := requestid.Get(ctx)
|
|
|
|
c = context.WithValue(c, "RequestID", reqId)
|
|
|
|
start := time.Now() // 记录开始时间
|
|
|
|
// 执行后续处理
|
|
ctx.Next(c)
|
|
|
|
// 计算耗时
|
|
duration := time.Since(start).Milliseconds()
|
|
|
|
logx.CtxInfo(c, "请求完成",
|
|
zap.String("IP", ctx.ClientIP()),
|
|
zap.String("Method", string(ctx.Method())),
|
|
zap.String("Path", string(ctx.Path())),
|
|
zap.Int("Status", ctx.GetResponse().StatusCode()),
|
|
zap.Int64("Duration", duration),
|
|
)
|
|
}
|
|
}
|