code: func PayloadUnaryClientInterceptor(entry *logrus.Entry, decider grpc_logging.ClientPayloadLoggingDecider) grpc.UnaryClientInterceptor {
  	return func(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error {
  		if !decider(ctx, method) {
  			return invoker(ctx, method, req, reply, cc, opts...)
  		}
  		logEntry := entry.WithFields(newClientLoggerFields(ctx, method))
  		logProtoMessageAsJson(logEntry, req, "grpc.request.content", "client request payload logged as grpc.request.content")
  		err := invoker(ctx, method, req, reply, cc, opts...)
  		if err == nil {
  			logProtoMessageAsJson(logEntry, reply, "grpc.response.content", "client response payload logged as grpc.response.content")
  		}
  		return err
  	}
  }
docs: // PayloadUnaryClientInterceptor returns a new unary client interceptor that logs the paylods of requests and responses.