From 7fd9a8427108aeac8d94544ffe2348fee88de191 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 17 Mar 2023 12:12:32 +0800 Subject: [PATCH] error --- config/config.yaml | 2 +- pkg/common/config/config.go | 1 + pkg/common/db/controller/friend.go | 2 ++ pkg/common/mw/rpc_server_interceptor.go | 46 ++++++++++++++----------- 4 files changed, 29 insertions(+), 22 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index 47d7e5409..d801d1811 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -162,7 +162,7 @@ log: #日志级别 6表示全都打印,测试阶段建议设置为6 remainLogLevel: -1 stderr: true - + withStack: false elasticSearchSwitch: false elasticSearchAddr: [ 127.0.0.1:9201 ] elasticSearchUser: "" diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index 114b36b2d..75dfc60aa 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -187,6 +187,7 @@ type config struct { RemainRotationCount uint `yaml:"remainRotationCount"` RemainLogLevel int `yaml:"remainLogLevel"` Stderr bool `yaml:"stderr"` + WithStack bool `yaml:"withStack"` ElasticSearchSwitch bool `yaml:"elasticSearchSwitch"` ElasticSearchAddr []string `yaml:"elasticSearchAddr"` ElasticSearchUser string `yaml:"elasticSearchUser"` diff --git a/pkg/common/db/controller/friend.go b/pkg/common/db/controller/friend.go index b85a4fb34..f2ede2e8e 100644 --- a/pkg/common/db/controller/friend.go +++ b/pkg/common/db/controller/friend.go @@ -7,6 +7,7 @@ import ( "github.com/OpenIMSDK/Open-IM-Server/pkg/common/constant" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/table/relation" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/tx" + "github.com/OpenIMSDK/Open-IM-Server/pkg/common/log" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/tracelog" "github.com/OpenIMSDK/Open-IM-Server/pkg/errs" "github.com/OpenIMSDK/Open-IM-Server/pkg/utils" @@ -74,6 +75,7 @@ func (f *friendDatabase) AddFriendRequest(ctx context.Context, fromUserID, toUse _, err := f.friendRequest.NewTx(tx).Take(ctx, fromUserID, toUserID) //有db错误 if err != nil && errors.Unwrap(err) != gorm.ErrRecordNotFound { + log.ZDebug(ctx, "AddFriendRequest err:%v", err.Error(), "err", err, "unwrap", errors.Unwrap(err)) return err } //无错误 则更新 diff --git a/pkg/common/mw/rpc_server_interceptor.go b/pkg/common/mw/rpc_server_interceptor.go index cb4df6dc6..ca6af8f7d 100644 --- a/pkg/common/mw/rpc_server_interceptor.go +++ b/pkg/common/mw/rpc_server_interceptor.go @@ -3,6 +3,12 @@ package mw import ( "context" "fmt" + "math" + "runtime" + "runtime/debug" + "strings" + + "github.com/OpenIMSDK/Open-IM-Server/pkg/common/config" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/log" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/mw/specialerror" "github.com/OpenIMSDK/Open-IM-Server/pkg/errs" @@ -12,10 +18,6 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" - "math" - "runtime" - "runtime/debug" - "strings" ) const OperationID = "operationID" @@ -87,23 +89,25 @@ func rpcServerInterceptor(ctx context.Context, req interface{}, info *grpc.Unary } grpcStatus := status.New(codes.Code(code), codeErr.Msg()) var errInfo *errinfo.ErrorInfo - if unwrap != err { - sti, ok := err.(interface{ StackTrace() errors.StackTrace }) - if ok { - log.ZWarn(ctx, "rpc server resp", err, "funcName", funcName, "unwrap", unwrap.Error(), "stack", fmt.Sprintf("%+v", err)) - if fs := sti.StackTrace(); len(fs) > 0 { - pc := uintptr(fs[0]) - fn := runtime.FuncForPC(pc) - file, line := fn.FileLine(pc) - errInfo = &errinfo.ErrorInfo{ - Path: file, - Line: uint32(line), - Name: fn.Name(), - Cause: unwrap.Error(), - Warp: nil, - } - if arr := strings.Split(err.Error(), ": "); len(arr) > 1 { - errInfo.Warp = arr[:len(arr)-1] + if config.Config.Log.WithStack { + if unwrap != err { + sti, ok := err.(interface{ StackTrace() errors.StackTrace }) + if ok { + log.ZWarn(ctx, "rpc server resp", err, "funcName", funcName, "unwrap", unwrap.Error(), "stack", fmt.Sprintf("%+v", err)) + if fs := sti.StackTrace(); len(fs) > 0 { + pc := uintptr(fs[0]) + fn := runtime.FuncForPC(pc) + file, line := fn.FileLine(pc) + errInfo = &errinfo.ErrorInfo{ + Path: file, + Line: uint32(line), + Name: fn.Name(), + Cause: unwrap.Error(), + Warp: nil, + } + if arr := strings.Split(err.Error(), ": "); len(arr) > 1 { + errInfo.Warp = arr[:len(arr)-1] + } } } }