Skip to content

Commit a04b205

Browse files
Merge pull request #833 from MervinPraison/claude/issue-831-20250711_173321
fix: centralize logging configuration to respect LOGLEVEL environment variable
2 parents 4a12aa9 + cfb459a commit a04b205

File tree

4 files changed

+31
-30
lines changed

4 files changed

+31
-30
lines changed

src/praisonai-agents/praisonaiagents/__init__.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,30 @@
22
Praison AI Agents - A package for hierarchical AI agent task execution
33
"""
44

5+
# Configure logging before any other imports
6+
import os
7+
import logging
8+
from rich.logging import RichHandler
9+
10+
# Get log level from environment variable
11+
LOGLEVEL = os.environ.get('LOGLEVEL', 'INFO').upper()
12+
13+
# Configure root logger
14+
logging.basicConfig(
15+
level=getattr(logging, LOGLEVEL, logging.INFO),
16+
format="%(asctime)s %(filename)s:%(lineno)d %(levelname)s %(message)s",
17+
datefmt="[%X]",
18+
handlers=[RichHandler(rich_tracebacks=True)]
19+
)
20+
21+
# Suppress specific noisy loggers
22+
logging.getLogger("litellm").setLevel(logging.WARNING)
23+
logging.getLogger("litellm.utils").setLevel(logging.WARNING)
24+
logging.getLogger("markdown_it").setLevel(logging.WARNING)
25+
logging.getLogger("rich.markdown").setLevel(logging.WARNING)
26+
logging.getLogger("httpx").setLevel(logging.WARNING)
27+
logging.getLogger("httpcore").setLevel(logging.WARNING)
28+
529
from .agent.agent import Agent
630
from .agent.image_agent import ImageAgent
731
from .agents.agents import PraisonAIAgents

src/praisonai-agents/praisonaiagents/knowledge/knowledge.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,6 @@ def __init__(self, config=None, verbose=None):
6767

6868
# Disable OpenAI API request logging
6969
logging.getLogger('openai').setLevel(logging.WARNING)
70-
71-
# Set root logger to warning to catch any uncategorized logs
72-
logging.getLogger().setLevel(logging.WARNING)
7370

7471
@cached_property
7572
def _deps(self):

src/praisonai-agents/praisonaiagents/llm/__init__.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,16 @@
55
# Disable litellm telemetry before any imports
66
os.environ["LITELLM_TELEMETRY"] = "False"
77

8-
# Suppress all relevant logs at module level
9-
logging.getLogger("litellm").setLevel(logging.ERROR)
10-
logging.getLogger("openai").setLevel(logging.ERROR)
11-
logging.getLogger("httpx").setLevel(logging.ERROR)
12-
logging.getLogger("httpcore").setLevel(logging.ERROR)
13-
logging.getLogger("pydantic").setLevel(logging.ERROR)
8+
# Suppress all relevant logs at module level - consistent with main __init__.py
9+
logging.getLogger("litellm").setLevel(logging.WARNING)
10+
logging.getLogger("openai").setLevel(logging.WARNING)
11+
logging.getLogger("httpx").setLevel(logging.WARNING)
12+
logging.getLogger("httpcore").setLevel(logging.WARNING)
13+
logging.getLogger("pydantic").setLevel(logging.WARNING)
1414

1515
# Suppress pydantic warnings
1616
warnings.filterwarnings("ignore", category=UserWarning, module="pydantic")
1717

18-
# Configure logging to suppress all INFO messages
19-
logging.basicConfig(level=logging.WARNING)
20-
2118
# Import after suppressing warnings
2219
from .llm import LLM, LLMContextLengthExceededException
2320
from .openai_client import (

src/praisonai-agents/praisonaiagents/main.py

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,32 +9,15 @@
99
from rich.panel import Panel
1010
from rich.text import Text
1111
from rich.markdown import Markdown
12-
from rich.logging import RichHandler
1312
from rich.live import Live
1413
import asyncio
1514

16-
# # Configure root logger
17-
# logging.basicConfig(level=logging.WARNING)
18-
19-
# Suppress litellm logs
15+
# Logging is already configured in __init__.py, just clean up handlers for litellm
2016
logging.getLogger("litellm").handlers = []
2117
logging.getLogger("litellm.utils").handlers = []
2218
logging.getLogger("litellm").propagate = False
2319
logging.getLogger("litellm.utils").propagate = False
2420

25-
LOGLEVEL = os.environ.get('LOGLEVEL', 'INFO').upper()
26-
27-
logging.basicConfig(
28-
level=getattr(logging, LOGLEVEL, logging.INFO),
29-
format="%(asctime)s %(filename)s:%(lineno)d %(levelname)s %(message)s",
30-
datefmt="[%X]",
31-
handlers=[RichHandler(rich_tracebacks=True)]
32-
)
33-
34-
# Add these lines to suppress markdown parser debug logs
35-
logging.getLogger('markdown_it').setLevel(logging.WARNING)
36-
logging.getLogger('rich.markdown').setLevel(logging.WARNING)
37-
3821
# Global list to store error logs
3922
error_logs = []
4023

0 commit comments

Comments
 (0)