From 927e36bbb6a3766096bf8f23e1d0c9c8c2301620 Mon Sep 17 00:00:00 2001 From: Dominik Jain Date: Mon, 31 Mar 2025 16:43:41 +0200 Subject: [PATCH] Avoid log level misconfiguration, allow user to configure log level --- myproject.demo.yml | 2 ++ scripts/agno_agent.py | 6 ++++-- src/serena/agent.py | 8 ++++++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/myproject.demo.yml b/myproject.demo.yml index 7774e1f6..4ddcd76f 100644 --- a/myproject.demo.yml +++ b/myproject.demo.yml @@ -6,3 +6,5 @@ language: python ignored_dirs: [".git", "temp"] # whether to open a graphical window with Serena's logs (not supported on MacOS) gui_log_window: True +# minimum log level for the GUI log window (10 = debug, 20 = info, 30 = warning, 40 = error) +gui_log_level: 20 diff --git a/scripts/agno_agent.py b/scripts/agno_agent.py index 62c90ffd..32c0ccd5 100644 --- a/scripts/agno_agent.py +++ b/scripts/agno_agent.py @@ -12,8 +12,11 @@ from sensai.util.helper import mark_used from serena.agent import SerenaAgent from serena.agno import SerenaAgnoToolkit -os.chdir(os.path.dirname(os.path.abspath(__file__))) mark_used(Gemini, Claude) + +os.chdir(os.path.dirname(os.path.abspath(__file__))) +Logger.root.setLevel(logging.INFO) + load_dotenv() project_file_path = "../myproject.yml" @@ -38,5 +41,4 @@ agno_agent = Agent( app = Playground(agents=[agno_agent]).get_app() if __name__ == "__main__": - Logger.root.setLevel(logging.INFO) serve_playground_app("agno_agent:app", reload=False) diff --git a/src/serena/agent.py b/src/serena/agent.py index 19e36a3a..3a63c6be 100644 --- a/src/serena/agent.py +++ b/src/serena/agent.py @@ -8,6 +8,7 @@ import os import platform import sys import traceback +import warnings from abc import ABC from collections import defaultdict from collections.abc import Callable, Iterator @@ -32,7 +33,6 @@ from serena.util.shell import execute_shell_command log = logging.getLogger(__name__) LOG_FORMAT = "%(levelname)-5s %(asctime)-15s %(name)s:%(funcName)s:%(lineno)d - %(message)s" -LOG_LEVEL = logging.INFO TTool = TypeVar("TTool", bound="Tool") @@ -63,7 +63,11 @@ class SerenaAgent: if platform.system() == "Darwin": log.warning("GUI log window is not supported on macOS") else: - self._gui_log_handler = GuiLogViewerHandler(GuiLogViewer(title="Serena Logs"), level=LOG_LEVEL, format_string=LOG_FORMAT) + log_level = project_config.get("gui_log_level", logging.INFO) + if Logger.root.level > log_level: + warnings.warn(f"Root logger level is higher than GUI log level; changing the root logger level to {log_level}") + Logger.root.setLevel(log_level) + self._gui_log_handler = GuiLogViewerHandler(GuiLogViewer(title="Serena Logs"), level=log_level, format_string=LOG_FORMAT) Logger.root.addHandler(self._gui_log_handler) log.info(