diff --git a/packages/google-cloud-logging/google/cloud/logging_v2/client.py b/packages/google-cloud-logging/google/cloud/logging_v2/client.py index db1b1c8c0380..cf9c5f116383 100644 --- a/packages/google-cloud-logging/google/cloud/logging_v2/client.py +++ b/packages/google-cloud-logging/google/cloud/logging_v2/client.py @@ -58,6 +58,7 @@ _GAE_RESOURCE_TYPE = "gae_app" _GKE_RESOURCE_TYPE = "k8s_container" _GCF_RESOURCE_TYPE = "cloud_function" +_JOB_RESOURCE_TYPE = "cloud_run_job" _RUN_RESOURCE_TYPE = "cloud_run_revision" @@ -380,15 +381,17 @@ def get_default_handler(self, **kw): 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: # Bypassing redirects via __stdout__ ensures structured logging # works robustly on Google Cloud Functions even if stdout is redirected. kw["stream"] = kw.get("stream", sys.__stdout__) return StructuredLogHandler(**kw, project_id=self.project) + elif monitored_resource.type == _GKE_RESOURCE_TYPE: + return StructuredLogHandler(**kw, project_id=self.project) elif monitored_resource.type == _RUN_RESOURCE_TYPE: return StructuredLogHandler(**kw, project_id=self.project) + elif monitored_resource.type == _JOB_RESOURCE_TYPE: + return StructuredLogHandler(**kw, project_id=self.project) return CloudLoggingHandler(self, resource=monitored_resource, **kw) def setup_logging( diff --git a/packages/google-cloud-logging/tests/unit/test_client.py b/packages/google-cloud-logging/tests/unit/test_client.py index e7c1a9c3f0f1..857c6c11c1c5 100644 --- a/packages/google-cloud-logging/tests/unit/test_client.py +++ b/packages/google-cloud-logging/tests/unit/test_client.py @@ -777,6 +777,36 @@ def test_get_default_handler_app_engine(self): self.assertIsInstance(handler, CloudLoggingHandler) + def test_get_default_handler_cloud_run_job(self): + import os + + from google.cloud._testing import _Monkey + + from google.cloud.logging.handlers import StructuredLogHandler + from google.cloud.logging_v2.handlers._monitored_resources import ( + _CLOUD_RUN_EXECUTION_ID, + _CLOUD_RUN_JOB_ID, + _CLOUD_RUN_TASK_ATTEMPT, + _CLOUD_RUN_TASK_INDEX, + ) + + credentials = _make_credentials() + client = self._make_one( + project=self.PROJECT, credentials=credentials, _use_grpc=False + ) + + cloud_run_job_env_vars = { + _CLOUD_RUN_JOB_ID: "TRUE", + _CLOUD_RUN_EXECUTION_ID: "TRUE", + _CLOUD_RUN_TASK_INDEX: "0", + _CLOUD_RUN_TASK_ATTEMPT: "0", + } + + with _Monkey(os, environ=cloud_run_job_env_vars): + handler = client.get_default_handler() + + self.assertIsInstance(handler, StructuredLogHandler) + def test_get_default_handler_container_engine(self): from google.cloud.logging.handlers import StructuredLogHandler