You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

loggerInterceptor.go 891 B

123456789101112131415161718192021222324252627282930313233
  1. package rpcserver
  2. import (
  3. "context"
  4. "gitlink.org.cn/jcce-pcm/pcm-coordinator/pkg/helper/xerr"
  5. "github.com/pkg/errors"
  6. "github.com/zeromicro/go-zero/core/logx"
  7. "google.golang.org/grpc"
  8. "google.golang.org/grpc/codes"
  9. "google.golang.org/grpc/status"
  10. )
  11. // LoggerInterceptor rpc service logger interceptor
  12. func LoggerInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) {
  13. resp, err = handler(ctx, req)
  14. if err != nil {
  15. causeErr := errors.Cause(err) // err类型
  16. if e, ok := causeErr.(*xerr.CodeError); ok { //自定义错误类型
  17. logx.WithContext(ctx).Errorf("【RPC-SRV-ERR】 %+v", err)
  18. //转成grpc err
  19. err = status.Error(codes.Code(e.GetErrCode()), e.GetErrMsg())
  20. } else {
  21. logx.WithContext(ctx).Errorf("【RPC-SRV-ERR】 %+v", err)
  22. }
  23. }
  24. return resp, err
  25. }

PCM is positioned as Software stack over Cloud, aiming to build the standards and ecology of heterogeneous cloud collaboration for JCC in a non intrusive and autonomous peer-to-peer manner.