Skip to content

Commit 5c6240c

Browse files
vertex-sdk-botcopybara-github
authored andcommitted
feat: Updates the ADK template to direct structured JSON logs to standard output.
PiperOrigin-RevId: 837124358
1 parent da79e21 commit 5c6240c

File tree

2 files changed

+18
-2
lines changed
  • vertexai
    • agent_engines/templates
    • preview/reasoning_engines/templates

2 files changed

+18
-2
lines changed

vertexai/agent_engines/templates/adk.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import asyncio
2828
from collections.abc import Awaitable
2929
import queue
30+
import sys
3031
import threading
3132
import warnings
3233

@@ -437,14 +438,21 @@ def _detect_cloud_resource_id(project_id: str) -> Optional[str]:
437438
"opentelemetry-exporter-gcp-logging", needed_for_logging=True
438439
)
439440

441+
class _SimpleLogRecordProcessor(opentelemetry.sdk._logs.export.SimpleLogRecordProcessor):
442+
def force_flush(self, timeout_millis: int = 30000) -> bool: # pylint: disable=no-self-use
443+
sys.stdout.flush()
444+
sys.stderr.flush()
445+
return True
446+
440447
logger_provider = opentelemetry.sdk._logs.LoggerProvider(resource=resource)
441448
logger_provider.add_log_record_processor(
442-
opentelemetry.sdk._logs.export.BatchLogRecordProcessor(
449+
_SimpleLogRecordProcessor(
443450
opentelemetry.exporter.cloud_logging.CloudLoggingExporter(
444451
project_id=project_id,
445452
default_log_name=os.getenv(
446453
"GCP_DEFAULT_LOG_NAME", "adk-on-agent-engine"
447454
),
455+
structured_json_file=sys.stdout,
448456
),
449457
)
450458
)

vertexai/preview/reasoning_engines/templates/adk.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import asyncio
2828
from collections.abc import Awaitable
2929
import queue
30+
import sys
3031
import threading
3132

3233

@@ -439,14 +440,21 @@ def _detect_cloud_resource_id(project_id: str) -> Optional[str]:
439440
"opentelemetry-exporter-gcp-logging", needed_for_logging=True
440441
)
441442

443+
class _SimpleLogRecordProcessor(opentelemetry.sdk._logs.export.SimpleLogRecordProcessor):
444+
def force_flush(self, timeout_millis: int = 30000) -> bool: # pylint: disable=no-self-use
445+
sys.stdout.flush()
446+
sys.stderr.flush()
447+
return True
448+
442449
logger_provider = opentelemetry.sdk._logs.LoggerProvider(resource=resource)
443450
logger_provider.add_log_record_processor(
444-
opentelemetry.sdk._logs.export.BatchLogRecordProcessor(
451+
_SimpleLogRecordProcessor(
445452
opentelemetry.exporter.cloud_logging.CloudLoggingExporter(
446453
project_id=project_id,
447454
default_log_name=os.getenv(
448455
"GCP_DEFAULT_LOG_NAME", "adk-on-agent-engine"
449456
),
457+
structured_json_file=sys.stdout,
450458
),
451459
)
452460
)

0 commit comments

Comments
 (0)