40 lines
		
	
	
		
			913 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			913 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package rpcserver
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 
 | |
| 	"hm-server/common/xerr"
 | |
| 
 | |
| 	"github.com/pkg/errors"
 | |
| 	"github.com/zeromicro/go-zero/core/logx"
 | |
| 	"google.golang.org/grpc"
 | |
| 	"google.golang.org/grpc/codes"
 | |
| 	"google.golang.org/grpc/status"
 | |
| )
 | |
| 
 | |
| /**
 | |
| * @Description rpc service logger interceptor
 | |
| * @Author Mikael
 | |
| * @Date 2021/1/9 13:35
 | |
| * @Version 1.0
 | |
| **/
 | |
| 
 | |
| func LoggerInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) {
 | |
| 
 | |
| 	resp, err = handler(ctx, req)
 | |
| 	if err != nil {
 | |
| 		causeErr := errors.Cause(err)                // err类型
 | |
| 		if e, ok := causeErr.(*xerr.CodeError); ok { //自定义错误类型
 | |
| 			logx.WithContext(ctx).Errorf("【RPC-SRV-ERR】 %v", err)
 | |
| 
 | |
| 			//转成grpc err
 | |
| 			err = status.Error(codes.Code(e.GetErrCode()), e.GetErrMsg())
 | |
| 		} else {
 | |
| 			logx.WithContext(ctx).Errorf("【RPC-SRV-ERR】 %v", err)
 | |
| 		}
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	return resp, err
 | |
| }
 |