From 2dc458c4f6b964c0d349e27d686199730c394390 Mon Sep 17 00:00:00 2001 From: Charlie Doern Date: Mon, 10 Mar 2025 16:02:19 -0400 Subject: [PATCH] fix: respect log_level in uvicorn and third party libs uvicorn has a `log_level` arg in uvicorn.run, pass in the effective level set by the logger. Additionally, third party libraries like httpx are using our logging format, but not honoring our log level. This seems unintended, so loop through all items in the loggerDict and apply the same log level as what we have set. Signed-off-by: Charlie Doern --- llama_stack/distribution/server/server.py | 1 + llama_stack/log.py | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/llama_stack/distribution/server/server.py b/llama_stack/distribution/server/server.py index ea8723365..2cc70a738 100644 --- a/llama_stack/distribution/server/server.py +++ b/llama_stack/distribution/server/server.py @@ -422,6 +422,7 @@ def main(): "host": listen_host, "port": port, "lifespan": "on", + "log_level": logger.getEffectiveLevel(), } if ssl_config: uvicorn_config.update(ssl_config) diff --git a/llama_stack/log.py b/llama_stack/log.py index 80ee9fa1b..572dea234 100644 --- a/llama_stack/log.py +++ b/llama_stack/log.py @@ -170,6 +170,11 @@ def setup_logging(category_levels: Dict[str, int], log_file: str | None) -> None } dictConfig(logging_config) + # Ensure third-party libraries follow the root log level + for _, logger in logging.root.manager.loggerDict.items(): + if isinstance(logger, logging.Logger): + logger.setLevel(root_level) + def get_logger(name: str, category: str = "uncategorized") -> logging.LoggerAdapter: """