Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@ def _get_http_options():
rest_numeric_enums={{ rest_numeric_enums }},
)

if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor(logging.DEBUG): # pragma: NO COVER
if {{ debug_logging_enabled("logging") }}: # pragma: NO COVER
request_url = "{host}{uri}".format(host=self._host, uri=transcoded_request['uri'])
method = transcoded_request['method']
try:
Expand Down Expand Up @@ -350,8 +350,13 @@ return {{ client_output_ident }}(
{%- endmacro %}


{% macro debug_logging_enabled(logging_expr="std_logging") -%}
CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor({{ logging_expr }}.DEBUG) and _LOGGER.hasHandlers()
{%- endmacro %}


{% macro unary_request_interceptor_common(service) %}
logging_enabled = CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor(std_logging.DEBUG)
logging_enabled = {{ debug_logging_enabled() }}
if logging_enabled: # pragma: NO COVER
request_metadata = client_call_details.metadata
if isinstance(request, proto.Message):
Expand Down Expand Up @@ -634,7 +639,7 @@ class {{ name|make_private }}(_Base{{ service.name }}RestTransport._Base{{name}}
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
if {{ debug_logging_enabled("logging") }}: # pragma: NO COVER
try:
response_payload = json_format.MessageToJson(resp)
except:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ class {{ service.async_client_name }}:

)

if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor(std_logging.DEBUG): # pragma: NO COVER
if {{ shared_macros.debug_logging_enabled() }}: # pragma: NO COVER
_LOGGER.debug(
"Created client `{{ service.meta.address.proto_package_versioned }}.{{ service.async_client_name }}`.",
extra = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -567,7 +567,7 @@ class {{ service.client_name }}(metaclass={{ service.client_name }}Meta):
self._transport = transport_init(**transport_kwargs)

if "async" not in str(self._transport):
if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor(std_logging.DEBUG): # pragma: NO COVER
if {{ shared_macros.debug_logging_enabled() }}: # pragma: NO COVER
_LOGGER.debug(
"Created client `{{ service.meta.address.proto_package_versioned }}.{{ service.client_name }}`.",
extra = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ class {{service.name}}RestTransport(_Base{{ service.name }}RestTransport):
resp = self._interceptor.post_{{ method.name|snake_case }}(resp)
response_metadata = [(k, str(v)) for k, v in response.headers.items()]
resp, _ = self._interceptor.post_{{ method.name|snake_case }}_with_metadata(resp, response_metadata)
if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor(logging.DEBUG): # pragma: NO COVER
if {{ shared_macros.debug_logging_enabled("logging") }}: # pragma: NO COVER
{# TODO(https://github.com/googleapis/gapic-generator-python/issues/2389): #}
{# Depending how we want to log (a) receiving a streaming response vs (b) exposing the next streamed item to the user, we could possibly want to log something here #}
{# (a) should always happen in api-core #}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ class Async{{service.name}}RestTransport(_Base{{ service.name }}RestTransport):
resp = await self._interceptor.post_{{ method.name|snake_case }}(resp)
response_metadata = [(k, str(v)) for k, v in response.headers.items()]
resp, _ = await self._interceptor.post_{{ method.name|snake_case }}_with_metadata(resp, response_metadata)
if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor(logging.DEBUG): # pragma: NO COVER
if {{ shared_macros.debug_logging_enabled("logging") }}: # pragma: NO COVER
{# TODO(https://github.com/googleapis/gapic-generator-python/issues/2389): #}
{# Depending how we want to log (a) receiving a streaming response vs (b) exposing the next streamed item to the user, we could possibly want to log something here #}
{# (a) should always happen in api-core #}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2817,6 +2817,27 @@ def test_{{ service.name|snake_case }}_base_transport_wrap_async_method_older_ap
assert "client_options" not in kwargs
assert "method_name" not in kwargs
assert "is_streaming" not in kwargs


@pytest.mark.parametrize("has_handlers", [True, False])
def test_{{ service.name|snake_case }}_grpc_logging_interceptor_has_handlers(
monkeypatch, has_handlers
):
logger = mock.MagicMock()
logger.isEnabledFor.return_value = True
logger.hasHandlers.return_value = has_handlers
monkeypatch.setattr(transports.grpc, "CLIENT_LOGGING_SUPPORTED", True)
monkeypatch.setattr(transports.grpc, "_LOGGER", logger)

response = mock.MagicMock()
response.result.return_value = "ok"
response.trailing_metadata.return_value = ()
out = transports.grpc._LoggingClientInterceptor().intercept_unary_unary(
lambda *_: response, mock.MagicMock(metadata=()), "req"
)
assert out is response
assert response.result.called is has_handlers
assert logger.debug.called is has_handlers
{% endif %}

{% endblock %}
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ def __init__(self, *,

)

if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor(std_logging.DEBUG): # pragma: NO COVER
if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor(std_logging.DEBUG) and _LOGGER.hasHandlers(): # pragma: NO COVER
_LOGGER.debug(
"Created client `google.cloud.asset_v1.AssetServiceAsyncClient`.",
extra = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -574,7 +574,7 @@ def __init__(self, *,
self._transport = transport_init(**transport_kwargs)

if "async" not in str(self._transport):
if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor(std_logging.DEBUG): # pragma: NO COVER
if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor(std_logging.DEBUG) and _LOGGER.hasHandlers(): # pragma: NO COVER
_LOGGER.debug(
"Created client `google.cloud.asset_v1.AssetServiceClient`.",
extra = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@

class _LoggingClientInterceptor(grpc.UnaryUnaryClientInterceptor): # pragma: NO COVER
def intercept_unary_unary(self, continuation, client_call_details, request):
logging_enabled = CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor(std_logging.DEBUG)
logging_enabled = CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor(std_logging.DEBUG) and _LOGGER.hasHandlers()
if logging_enabled: # pragma: NO COVER
request_metadata = client_call_details.metadata
if isinstance(request, proto.Message):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@

class _LoggingClientAIOInterceptor(grpc.aio.UnaryUnaryClientInterceptor): # pragma: NO COVER
async def intercept_unary_unary(self, continuation, client_call_details, request):
logging_enabled = CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor(std_logging.DEBUG)
logging_enabled = CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor(std_logging.DEBUG) and _LOGGER.hasHandlers()
if logging_enabled: # pragma: NO COVER
request_metadata = client_call_details.metadata
if isinstance(request, proto.Message):
Expand Down
Loading
Loading