Skip to content

Commit

Permalink
feat!: Use StructuredLogHandler on App Engine instead of
Browse files Browse the repository at this point in the history
CloudLoggingHandler
  • Loading branch information
gkevinzheng committed Jun 24, 2024
1 parent bb1f1ef commit 5ae6161
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 14 deletions.
25 changes: 15 additions & 10 deletions google/cloud/logging_v2/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -376,18 +376,23 @@ def get_default_handler(self, **kw):
"""
monitored_resource = kw.pop("resource", detect_resource(self.project))

if isinstance(monitored_resource, Resource):
if monitored_resource.type == _GAE_RESOURCE_TYPE:
return CloudLoggingHandler(self, resource=monitored_resource, **kw)
elif monitored_resource.type == _GKE_RESOURCE_TYPE:
return StructuredLogHandler(**kw, project_id=self.project)
elif monitored_resource.type == _GCF_RESOURCE_TYPE:
_structured_log_types = [
_GAE_RESOURCE_TYPE,
_GKE_RESOURCE_TYPE,
_GCF_RESOURCE_TYPE,
_RUN_RESOURCE_TYPE
]

if isinstance(monitored_resource, Resource) and monitored_resource.type in _structured_log_types:
if monitored_resource.type == _GCF_RESOURCE_TYPE:
# __stdout__ stream required to support structured logging on Python 3.7
kw["stream"] = kw.get("stream", sys.__stdout__)
return StructuredLogHandler(**kw, project_id=self.project)
elif monitored_resource.type == _RUN_RESOURCE_TYPE:
return StructuredLogHandler(**kw, project_id=self.project)
return CloudLoggingHandler(self, resource=monitored_resource, **kw)

handler = StructuredLogHandler(**kw, project_id=self.project)
else:
handler = CloudLoggingHandler(self, resource=monitored_resource, **kw)

return handler

def setup_logging(
self, *, log_level=logging.INFO, excluded_loggers=EXCLUDED_LOGGER_DEFAULTS, **kw
Expand Down
6 changes: 2 additions & 4 deletions tests/unit/test_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -766,7 +766,7 @@ def test_get_default_handler_app_engine(self):
import os
from google.cloud._testing import _Monkey
from google.cloud.logging_v2.handlers._monitored_resources import _GAE_ENV_VARS
from google.cloud.logging.handlers import CloudLoggingHandler
from google.cloud.logging.handlers import StructuredLogHandler

credentials = _make_credentials()
client = self._make_one(
Expand All @@ -778,9 +778,7 @@ def test_get_default_handler_app_engine(self):
with _Monkey(os, environ=gae_env_vars):
handler = client.get_default_handler()

handler.transport.worker.stop()

self.assertIsInstance(handler, CloudLoggingHandler)
self.assertIsInstance(handler, StructuredLogHandler)

def test_get_default_handler_container_engine(self):
from google.cloud.logging.handlers import StructuredLogHandler
Expand Down

0 comments on commit 5ae6161

Please sign in to comment.