From 8d0ad3901e5cb25278e64233d583523b25daee7c Mon Sep 17 00:00:00 2001 From: Shuchang Zheng Date: Tue, 3 Feb 2026 08:11:45 -0800 Subject: [PATCH] Route stdlib logging through structlog for JSON asyncio exceptions (#4601) Co-authored-by: Suchintan Co-authored-by: Benji Visser --- skyvern/forge/sdk/forge_log.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/skyvern/forge/sdk/forge_log.py b/skyvern/forge/sdk/forge_log.py index 3b8c54c4..079607da 100644 --- a/skyvern/forge/sdk/forge_log.py +++ b/skyvern/forge/sdk/forge_log.py @@ -314,6 +314,23 @@ def setup_logger() -> None: + additional_processors + [skyvern_logs_processor, renderer], ) + handler = logging.StreamHandler() + handler.setFormatter( + structlog.stdlib.ProcessorFormatter( + processors=[ + structlog.stdlib.add_log_level, + structlog.stdlib.add_logger_name, + structlog.processors.TimeStamper(fmt="iso"), + structlog.processors.format_exc_info, + renderer, + ] + ) + ) + root_logger = logging.getLogger() + root_logger.handlers.clear() + root_logger.addHandler(handler) + root_logger.setLevel(LOG_LEVEL_VAL) + uvicorn_error = logging.getLogger("uvicorn.error") uvicorn_error.disabled = True uvicorn_access = logging.getLogger("uvicorn.access")