chore: import upstream snapshot with attribution
Validate YAML Workflows / Validate YAML Configuration Files (push) Has been cancelled
Validate YAML Workflows / Validate YAML Configuration Files (push) Has been cancelled
This commit is contained in:
Executable
+30
@@ -0,0 +1,30 @@
|
||||
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
|
||||
Reference in New Issue
Block a user