second version
This commit is contained in:
25
backend/app/ws_log_handler.py
Normal file
25
backend/app/ws_log_handler.py
Normal file
@@ -0,0 +1,25 @@
|
||||
import asyncio
|
||||
import logging
|
||||
from datetime import datetime, timezone
|
||||
|
||||
from .ws_manager import manager
|
||||
|
||||
|
||||
class WSLogHandler(logging.Handler):
|
||||
"""Posílá log záznamy přes WebSocket všem připojeným klientům /ws/logs."""
|
||||
|
||||
def emit(self, record: logging.LogRecord) -> None:
|
||||
try:
|
||||
loop = asyncio.get_running_loop()
|
||||
except RuntimeError:
|
||||
return
|
||||
ts = datetime.fromtimestamp(record.created, tz=timezone.utc).strftime("%H:%M:%S")
|
||||
msg = {
|
||||
"ts": ts,
|
||||
"level": record.levelname,
|
||||
"logger": record.name.split(".")[-1],
|
||||
"msg": record.getMessage(),
|
||||
}
|
||||
loop.call_soon_threadsafe(
|
||||
lambda: asyncio.ensure_future(manager.broadcast_log(msg))
|
||||
)
|
||||
Reference in New Issue
Block a user