mirror of
https://github.com/OpenBMB/ChatDev.git
synced 2026-04-25 11:18:06 +00:00
31 lines
1.2 KiB
Python
Executable File
31 lines
1.2 KiB
Python
Executable File
import asyncio
|
|
from typing import Any, Dict
|
|
|
|
from entity.enums import LogLevel, EventType
|
|
from utils.logger import WorkflowLogger, LogEntry
|
|
from utils.structured_logger import get_workflow_logger
|
|
|
|
|
|
class WebSocketLogger(WorkflowLogger):
|
|
"""Workflow logger that also pushes entries via WebSocket."""
|
|
|
|
def __init__(self, websocket_manager, session_id: str, workflow_id: str = None, log_level: LogLevel = LogLevel.DEBUG):
|
|
super().__init__(workflow_id, log_level, log_to_console=False)
|
|
self.websocket_manager = websocket_manager
|
|
self.session_id = session_id
|
|
|
|
def add_log(self, level: LogLevel, message: str = None, node_id: str = None,
|
|
event_type: EventType = None, details: Dict[str, Any] = None,
|
|
duration: float = None) -> LogEntry | None:
|
|
log_entry = super().add_log(level, message, node_id, event_type, details, duration)
|
|
if not log_entry:
|
|
return None
|
|
|
|
# Send the message using the sync method which handles event loop properly
|
|
self.websocket_manager.send_message_sync(self.session_id, {
|
|
"type": "log",
|
|
"data": log_entry.to_dict()
|
|
})
|
|
|
|
return log_entry
|