From c8443b1a2a849d962a4911d7e12278ab88ddcf3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BE=E9=87=8C=28barry=29?= Date: Tue, 9 Jul 2024 12:58:30 +0800 Subject: [PATCH] fix filter content type (#38) --- .../middleware_accesslog/middleware.go | 55 +++++++++++-------- 1 file changed, 32 insertions(+), 23 deletions(-) diff --git a/internal/middlewares/middleware_accesslog/middleware.go b/internal/middlewares/middleware_accesslog/middleware.go index a148ff8e..8508cda7 100644 --- a/internal/middlewares/middleware_accesslog/middleware.go +++ b/internal/middlewares/middleware_accesslog/middleware.go @@ -3,7 +3,6 @@ package middleware_accesslog import ( "context" "fmt" - "strings" "time" "github.com/gofiber/utils" @@ -42,8 +41,6 @@ func (l LogMiddleware) Middleware(next lava.HandlerFunc) lava.HandlerFunc { return func(ctx context.Context, req lava.Request) (rsp lava.Response, gErr error) { now := time.Now() - logOpts := handleLogOption(req.Header().PeekAll("X-Log-Option")) - evt := log.NewEvent() referer := utils.UnsafeString(req.Header().Referer()) if referer != "" { @@ -67,8 +64,9 @@ func (l LogMiddleware) Middleware(next lava.HandlerFunc) lava.HandlerFunc { // 错误和panic处理 defer func() { - if !generic.IsNil(gErr) || logOpts["all"] { - if !strings.HasPrefix(req.ContentType(), "multipart/form-data") { + if !generic.IsNil(gErr) { + logOpts := handleLogOption(req.Header().PeekAll("X-Log-Option")) + if logOpts["all"] { evt.Any("req_body", req.Payload()) evt.Bytes("req_header", req.Header().Header()) if rsp != nil { @@ -104,30 +102,41 @@ func (l LogMiddleware) Middleware(next lava.HandlerFunc) lava.HandlerFunc { e = l.logger.Err(gErr).Func(log.WithEvent(evt)) pb := errutil.ParseError(gErr) - if pb.Trace == nil { - pb.Trace = new(errorpb.ErrTrace) + { + if pb.Trace == nil { + pb.Trace = new(errorpb.ErrTrace) + } + pb.Trace.Operation = req.Operation() + pb.Trace.Service = req.Service() + pb.Trace.Version = version.Version() } - pb.Trace.Operation = req.Operation() - pb.Trace.Service = req.Service() - pb.Trace.Version = version.Version() - if pb.Msg != nil { - pb.Msg = new(errorpb.ErrMsg) - } - pb.Msg.Msg = gErr.Error() - pb.Msg.Detail = fmt.Sprintf("%#v", gErr) - if pb.Msg.Tags == nil { - pb.Msg.Tags = make(map[string]string) + { + if pb.Msg != nil { + pb.Msg = new(errorpb.ErrMsg) + } + pb.Msg.Msg = gErr.Error() + pb.Msg.Detail = fmt.Sprintf("%#v", gErr) + if pb.Msg.Tags == nil { + pb.Msg.Tags = make(map[string]string) + } } - if pb.Code.Message == "" { - pb.Code.Message = gErr.Error() - } + { + if pb.Code.Message == "" { + pb.Code.Message = gErr.Error() + } + + if pb.Code.StatusCode == errorpb.Code_OK { + log.Warn(ctx).Any("code", pb.Code).Msg("grpc response error with status code is 0") + } - if pb.Code.Code == 0 { - pb.Code.Code = int32(errutil.GrpcCodeToHTTP(codes.Code(pb.Code.StatusCode))) - pb.Code.StatusCode = errorpb.Code_Internal + if pb.Code.Code == 0 { + pb.Code.Code = int32(errutil.GrpcCodeToHTTP(codes.Code(pb.Code.StatusCode))) + pb.Code.StatusCode = errorpb.Code_Internal + } } + gErr = errutil.ConvertErr2Status(pb).Err() } e.Msg("record request")