From 482099c9259a2fc2911f2785f2e1aab776298e78 Mon Sep 17 00:00:00 2001 From: "Wei Sun (Jack)" Date: Fri, 16 May 2025 21:27:56 -0700 Subject: [PATCH] chore!: Sets up `google_adk` for top level logger namespace. Removes `--log_to_tmp` option in `adk web` and `adk api_server` for the same reason. Context: google-auth commit [1] broke adk log, because it disables the top level logger named "google", which is also adk's top level logger. We establish a separate top level logger with a different name `google_adk` to prevent this in the future. This commit only changes google_llm.py. All other files will be changed in later commits. [1] https://github.com/googleapis/google-auth-library-python/commit/77ad53eb00c74b3badc486c8207a16dbc49f37e5#diff-e386c2b2c39b4d746c1e257f503acecbde49b1746b1a34f53b57083ed6094161 PiperOrigin-RevId: 759872317 --- src/google/adk/cli/cli_tools_click.py | 32 ++------------------------- src/google/adk/cli/utils/logs.py | 18 ++++++++++----- src/google/adk/models/google_llm.py | 2 +- 3 files changed, 16 insertions(+), 36 deletions(-) diff --git a/src/google/adk/cli/cli_tools_click.py b/src/google/adk/cli/cli_tools_click.py index 73fb09b..284862d 100644 --- a/src/google/adk/cli/cli_tools_click.py +++ b/src/google/adk/cli/cli_tools_click.py @@ -408,16 +408,6 @@ def cli_eval( default="INFO", help="Optional. Set the logging level", ) -@click.option( - "--log_to_tmp", - is_flag=True, - show_default=True, - default=False, - help=( - "Optional. Whether to log to system temp folder instead of console." - " This is useful for local debugging." - ), -) @click.option( "--trace_to_cloud", is_flag=True, @@ -439,7 +429,6 @@ def cli_eval( ) def cli_web( agents_dir: str, - log_to_tmp: bool, session_db_url: str = "", log_level: str = "INFO", allow_origins: Optional[list[str]] = None, @@ -457,10 +446,7 @@ def cli_web( adk web --session_db_url=[db_url] --port=[port] path/to/agents_dir """ - if log_to_tmp: - logs.log_to_tmp_folder(getattr(logging, log_level.upper())) - else: - logs.log_to_stderr(getattr(logging, log_level.upper())) + logs.setup_adk_logger(getattr(logging, log_level.upper())) @asynccontextmanager async def _lifespan(app: FastAPI): @@ -542,16 +528,6 @@ def cli_web( default="INFO", help="Optional. Set the logging level", ) -@click.option( - "--log_to_tmp", - is_flag=True, - show_default=True, - default=False, - help=( - "Optional. Whether to log to system temp folder instead of console." - " This is useful for local debugging." - ), -) @click.option( "--trace_to_cloud", is_flag=True, @@ -575,7 +551,6 @@ def cli_web( ) def cli_api_server( agents_dir: str, - log_to_tmp: bool, session_db_url: str = "", log_level: str = "INFO", allow_origins: Optional[list[str]] = None, @@ -593,10 +568,7 @@ def cli_api_server( adk api_server --session_db_url=[db_url] --port=[port] path/to/agents_dir """ - if log_to_tmp: - logs.log_to_tmp_folder(getattr(logging, log_level.upper())) - else: - logs.log_to_stderr(getattr(logging, log_level.upper())) + logs.setup_adk_logger(getattr(logging, log_level.upper())) config = uvicorn.Config( get_fast_api_app( diff --git a/src/google/adk/cli/utils/logs.py b/src/google/adk/cli/utils/logs.py index 9723df0..0ff1e2b 100644 --- a/src/google/adk/cli/utils/logs.py +++ b/src/google/adk/cli/utils/logs.py @@ -14,6 +14,7 @@ import logging import os +import sys import tempfile import time @@ -22,11 +23,18 @@ LOGGING_FORMAT = ( ) -def log_to_stderr(level=logging.INFO): - logging.basicConfig( - level=level, - format=LOGGING_FORMAT, - ) +def setup_adk_logger(level=logging.INFO): + # Configure the root logger format and level. + logging.basicConfig(level=level, format=LOGGING_FORMAT) + + # Set up adk_logger and log to stderr. + handler = logging.StreamHandler(sys.stderr) + handler.setLevel(level) + handler.setFormatter(logging.Formatter(LOGGING_FORMAT)) + + adk_logger = logging.getLogger('google_adk') + adk_logger.setLevel(level) + adk_logger.addHandler(handler) def log_to_tmp_folder( diff --git a/src/google/adk/models/google_llm.py b/src/google/adk/models/google_llm.py index 1ac4430..352a1b9 100644 --- a/src/google/adk/models/google_llm.py +++ b/src/google/adk/models/google_llm.py @@ -36,7 +36,7 @@ from .llm_response import LlmResponse if TYPE_CHECKING: from .llm_request import LlmRequest -logger = logging.getLogger(__name__) +logger = logging.getLogger('google_adk.' + __name__) _NEW_LINE = '\n' _EXCLUDED_PART_FIELD = {'inline_data': {'data'}}