Skip to content

Commit

Permalink
feat: add debug log when sending requests
Browse files Browse the repository at this point in the history
  • Loading branch information
parthea committed Dec 3, 2024
1 parent 8be95a2 commit fb771fa
Show file tree
Hide file tree
Showing 8 changed files with 1,035 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,8 @@ def _get_http_options():
method_name (str): The method name.
service_name (str): The service name.
is_async (bool): Used to determine the code path i.e. whether for sync or async call. #}
{% macro rest_call_method_common(body_spec, method_name, service_name, is_async=False) %}
{% macro rest_call_method_common(body_spec, method_name, service, is_async=False) %}
{% set service_name = service.name %}
{% set await_prefix = "await " if is_async else "" %}
{% set async_class_prefix = "Async" if is_async else "" %}

Expand Down Expand Up @@ -434,7 +435,7 @@ class _{{ name }}(_Base{{ service.name }}RestTransport._Base{{name}}, {{ async_m
{{ sig.response_type }}: Response from {{ name }} method.
{% endif %}
"""
{{ rest_call_method_common(body_spec, name, service.name, is_async)|indent(4) }}
{{ rest_call_method_common(body_spec, name, service, is_async)|indent(4) }}

{% if sig.response_type == "None" %}
return {{ await_prefix }}self._interceptor.post_{{ name|snake_case }}(None)
Expand All @@ -447,6 +448,17 @@ class _{{ name }}(_Base{{ service.name }}RestTransport._Base{{name}}, {{ async_m
resp = {{ sig.response_type }}()
resp = json_format.Parse(content, resp)
resp = {{ await_prefix }}self._interceptor.post_{{ name|snake_case }}(resp)
if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor(logging.DEBUG): # pragma: NO COVER
_LOGGER.debug(
"Received response for {{ service.meta.address.proto_package_versioned }}.{{ service.async_client_name }}.{{ name }}",
extra = {
"serviceName": "{{ service.meta.address.proto }}",
"rpcName": "{{ name }}",
"retryAttempt": 1,
"response": json_format.MessageToJson(response),
"metadata": str(dict(response.headers)),
},
)
return resp
{% endif %}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,16 @@ except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object, None] # type: ignore


import logging

try: # pragma: NO COVER
from google.api_core import client_logging # type: ignore
CLIENT_LOGGING_SUPPORTED = True
except ImportError:
CLIENT_LOGGING_SUPPORTED = False

_LOGGER = logging.getLogger(__name__)

DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
gapic_version=BASE_DEFAULT_CLIENT_INFO.gapic_version,
grpc_version=None,
Expand Down Expand Up @@ -227,7 +237,7 @@ class {{service.name}}RestTransport(_Base{{ service.name }}RestTransport):
{% endif %}
"""

{{ shared_macros.rest_call_method_common(body_spec, method.name, service.name)|indent(8) }}
{{ shared_macros.rest_call_method_common(body_spec, method.name, service)|indent(8) }}

{% if not method.void %}
# Return the response
Expand All @@ -247,6 +257,17 @@ class {{service.name}}RestTransport(_Base{{ service.name }}RestTransport):
json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True)
{% endif %}{# method.lro #}
resp = self._interceptor.post_{{ method.name|snake_case }}(resp)
if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor(logging.DEBUG): # pragma: NO COVER
_LOGGER.debug(
"Received response for {{ service.meta.address.proto_package_versioned }}.{{ service.client_name }}.{{ method.transport_safe_name|snake_case }}",
extra = {
"serviceName": "{{ service.meta.address.proto }}",
"rpcName": "{{ method.name }}",
"retryAttempt": 1,
"response": {% if method.output.ident.is_proto_plus_type %}{{ method.output.ident }}.to_json(resp){% else %}json_format.MessageToJson(resp){% endif %},
"metadata": str(dict(response.headers)),
},
)
return resp

{% endif %}{# method.void #}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,17 @@ from .rest_base import _Base{{ service.name }}RestTransport

from .base import DEFAULT_CLIENT_INFO as BASE_DEFAULT_CLIENT_INFO


import logging

try: # pragma: NO COVER
from google.api_core import client_logging # type: ignore
CLIENT_LOGGING_SUPPORTED = True
except ImportError:
CLIENT_LOGGING_SUPPORTED = False

_LOGGER = logging.getLogger(__name__)

try:
OptionalRetry = Union[retries.AsyncRetry, gapic_v1.method._MethodDefault, None]
except AttributeError: # pragma: NO COVER
Expand Down Expand Up @@ -188,7 +199,7 @@ class Async{{service.name}}RestTransport(_Base{{ service.name }}RestTransport):
{% endif %}
"""

{{ shared_macros.rest_call_method_common(body_spec, method.name, service.name, is_async=True)|indent(8) }}
{{ shared_macros.rest_call_method_common(body_spec, method.name, service, is_async=True)|indent(8) }}

{% if not method.void %}
# Return the response
Expand All @@ -206,6 +217,18 @@ class Async{{service.name}}RestTransport(_Base{{ service.name }}RestTransport):
json_format.Parse(content, pb_resp, ignore_unknown_fields=True)
{% endif %}{# if method.server_streaming #}
resp = await self._interceptor.post_{{ method.name|snake_case }}(resp)
if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor(logging.DEBUG): # pragma: NO COVER
_LOGGER.debug(
"Received response for {{ service.meta.address.proto_package_versioned }}.{{ service.async_client_name }}.{{ method.transport_safe_name|snake_case }}",
extra = {
"serviceName": "{{ service.meta.address.proto }}",
"rpcName": "{{ method.name }}",
"retryAttempt": 1,
"response": {% if method.output.ident.is_proto_plus_type %}{{ method.output.ident }}.to_json(response){% else %}json_format.MessageToJson(response){% endif %},
"metadata": str(dict(response.headers)),
},
)

return resp

{% endif %}{# method.void #}
Expand Down
Loading

0 comments on commit fb771fa

Please sign in to comment.