diff --git a/dtmcli/utils.go b/dtmcli/utils.go index 40195eb..eba4bb9 100644 --- a/dtmcli/utils.go +++ b/dtmcli/utils.go @@ -1,7 +1,6 @@ package dtmcli import ( - "context" "database/sql" "encoding/json" "errors" @@ -14,7 +13,6 @@ import ( "time" "github.com/go-resty/resty/v2" - grpc "google.golang.org/grpc" ) // P2E panic to error @@ -107,6 +105,9 @@ func MustRemarshal(from interface{}, to interface{}) { E2P(err) } +// LogFunc log function type +type LogFunc func(format string, args ...interface{}) + // Logf 输出日志 func Logf(format string, args ...interface{}) { msg := fmt.Sprintf(format, args...) @@ -271,19 +272,3 @@ func CheckResult(res interface{}, err error) error { } return err } - -// GrpcServerLog 打印grpc服务端的日志 -func GrpcServerLog(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) { - Logf("grpc server handling: %s %v", info.FullMethod, req) - m, err := handler(ctx, req) - Logf("grpc server handled: %s %v result: %v err: %v", info.FullMethod, req, m, err) - return m, err -} - -// GrpcClientLog 打印grpc服务端的日志 -func GrpcClientLog(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error { - Logf("grpc client calling: %s%s %v", cc.Target(), method, req) - err := invoker(ctx, method, req, reply, cc, opts...) - Logf("grpc client called: %s%s %v result: %v err: %v", cc.Target(), method, req, reply, err) - return err -} diff --git a/dtmpb/type.go b/dtmpb/type.go index 044544a..27fdeb9 100644 --- a/dtmpb/type.go +++ b/dtmpb/type.go @@ -1,6 +1,7 @@ package dtmpb import ( + context "context" "strings" "github.com/yedf/dtm/dtmcli" @@ -12,7 +13,7 @@ var clients = map[string]*grpc.ClientConn{} // GetGrpcConn 1 func GetGrpcConn(grpcServer string) (conn *grpc.ClientConn, rerr error) { if clients[grpcServer] == nil { - conn, err := grpc.Dial(grpcServer, grpc.WithInsecure(), grpc.WithBlock(), grpc.WithUnaryInterceptor(dtmcli.GrpcClientLog)) + conn, err := grpc.Dial(grpcServer, grpc.WithInsecure(), grpc.WithBlock(), grpc.WithUnaryInterceptor(GrpcClientLog)) if err == nil { clients[grpcServer] = conn dtmcli.Logf("dtm client inited for %s", grpcServer) @@ -41,3 +42,21 @@ func GetServerAndMethod(grpcURL string) (string, string) { method := "/" + strings.Join(fs[1:], "/") return server, method } + +// GrpcServerLog 打印grpc服务端的日志 +func GrpcServerLog(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) { + dtmcli.Logf("grpc server handling: %s %v", info.FullMethod, req) + m, err := handler(ctx, req) + log := dtmcli.If(err != nil, dtmcli.LogRedf, dtmcli.Logf).(dtmcli.LogFunc) + log("grpc server handled: %s %v result: %v err: %v", info.FullMethod, req, m, err) + return m, err +} + +// GrpcClientLog 打印grpc服务端的日志 +func GrpcClientLog(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error { + dtmcli.Logf("grpc client calling: %s%s %v", cc.Target(), method, req) + err := invoker(ctx, method, req, reply, cc, opts...) + log := dtmcli.If(err != nil, dtmcli.LogRedf, dtmcli.Logf).(dtmcli.LogFunc) + log("grpc client called: %s%s %v result: %v err: %v", cc.Target(), method, req, reply, err) + return err +} diff --git a/dtmsvr/main.go b/dtmsvr/main.go index caeb97b..c95822d 100644 --- a/dtmsvr/main.go +++ b/dtmsvr/main.go @@ -26,7 +26,7 @@ func StartSvr() { lis, err := net.Listen("tcp", fmt.Sprintf(":%d", dtmsvrGrpcPort)) dtmcli.FatalIfError(err) - s := grpc.NewServer(grpc.UnaryInterceptor(dtmcli.GrpcServerLog)) + s := grpc.NewServer(grpc.UnaryInterceptor(dtmpb.GrpcServerLog)) dtmpb.RegisterDtmServer(s, &dtmServer{}) dtmcli.Logf("grpc listening at %v", lis.Addr()) go func() { diff --git a/examples/main_base.go b/examples/main_base.go index fa6cc11..533b837 100644 --- a/examples/main_base.go +++ b/examples/main_base.go @@ -38,14 +38,14 @@ func BaseAppStartup() *gin.Engine { dtmcli.Logf("Starting busi at: %d", BusiPort) go app.Run(fmt.Sprintf(":%d", BusiPort)) - conn, err := grpc.Dial(DtmGrpcServer, grpc.WithInsecure(), grpc.WithBlock(), grpc.WithUnaryInterceptor(dtmcli.GrpcClientLog)) + conn, err := grpc.Dial(DtmGrpcServer, grpc.WithInsecure(), grpc.WithBlock(), grpc.WithUnaryInterceptor(dtmpb.GrpcClientLog)) dtmcli.FatalIfError(err) DtmClient = dtmpb.NewDtmClient(conn) dtmcli.Logf("dtm client inited") lis, err := net.Listen("tcp", fmt.Sprintf(":%d", BusiPbPort)) dtmcli.FatalIfError(err) - s := grpc.NewServer(grpc.UnaryInterceptor(dtmcli.GrpcServerLog)) + s := grpc.NewServer(grpc.UnaryInterceptor(dtmpb.GrpcServerLog)) RegisterBusiServer(s, &busiServer{}) dtmcli.Logf("busi grpc listening at %v", lis.Addr()) go func() {