diff --git a/vertexai/agent_engines/templates/adk.py b/vertexai/agent_engines/templates/adk.py index 975629d881..df5ed03da0 100644 --- a/vertexai/agent_engines/templates/adk.py +++ b/vertexai/agent_engines/templates/adk.py @@ -27,6 +27,7 @@ import asyncio from collections.abc import Awaitable import queue +import sys import threading import warnings @@ -437,14 +438,25 @@ def _detect_cloud_resource_id(project_id: str) -> Optional[str]: "opentelemetry-exporter-gcp-logging", needed_for_logging=True ) + class _SimpleLogRecordProcessor( + opentelemetry.sdk._logs.export.SimpleLogRecordProcessor + ): + def force_flush( + self, timeout_millis: int = 30000 + ) -> bool: # pylint: disable=no-self-use + sys.stdout.flush() + sys.stderr.flush() + return True + logger_provider = opentelemetry.sdk._logs.LoggerProvider(resource=resource) logger_provider.add_log_record_processor( - opentelemetry.sdk._logs.export.BatchLogRecordProcessor( + _SimpleLogRecordProcessor( opentelemetry.exporter.cloud_logging.CloudLoggingExporter( project_id=project_id, default_log_name=os.getenv( "GCP_DEFAULT_LOG_NAME", "adk-on-agent-engine" ), + structured_json_file=sys.stdout, ), ) ) diff --git a/vertexai/preview/reasoning_engines/templates/adk.py b/vertexai/preview/reasoning_engines/templates/adk.py index d4fa2f08d8..c48ff9e8f8 100644 --- a/vertexai/preview/reasoning_engines/templates/adk.py +++ b/vertexai/preview/reasoning_engines/templates/adk.py @@ -27,6 +27,7 @@ import asyncio from collections.abc import Awaitable import queue +import sys import threading @@ -439,14 +440,25 @@ def _detect_cloud_resource_id(project_id: str) -> Optional[str]: "opentelemetry-exporter-gcp-logging", needed_for_logging=True ) + class _SimpleLogRecordProcessor( + opentelemetry.sdk._logs.export.SimpleLogRecordProcessor + ): + def force_flush( + self, timeout_millis: int = 30000 + ) -> bool: # pylint: disable=no-self-use + sys.stdout.flush() + sys.stderr.flush() + return True + logger_provider = opentelemetry.sdk._logs.LoggerProvider(resource=resource) logger_provider.add_log_record_processor( - opentelemetry.sdk._logs.export.BatchLogRecordProcessor( + _SimpleLogRecordProcessor( opentelemetry.exporter.cloud_logging.CloudLoggingExporter( project_id=project_id, default_log_name=os.getenv( "GCP_DEFAULT_LOG_NAME", "adk-on-agent-engine" ), + structured_json_file=sys.stdout, ), ) )