zhenxun_bot/zhenxun/builtin_plugins/web_ui/api/logs/logs.py
BalconyJH bc5a9c4fcc
Develop: 完全使用 ruff 替代 isort 与 black (#1757)
* 🚨 完全使用 ruff 替代 isort 与 black

* 🚨 ruff lint&format
2024-12-10 19:49:11 +08:00

30 lines
851 B
Python

from fastapi import APIRouter
from loguru import logger
from nonebot.utils import escape_tag
from starlette.websockets import WebSocket, WebSocketDisconnect, WebSocketState
from .log_manager import LOG_STORAGE
router = APIRouter()
@router.websocket("/logs")
async def system_logs_realtime(websocket: WebSocket):
await websocket.accept()
async def log_listener(log: str):
await websocket.send_text(log)
LOG_STORAGE.listeners.add(log_listener)
try:
while websocket.client_state == WebSocketState.CONNECTED:
recv = await websocket.receive()
logger.trace(
f"{system_logs_realtime.__name__!r} received "
f"<e>{escape_tag(repr(recv))}</e>"
)
except WebSocketDisconnect:
pass
finally:
LOG_STORAGE.listeners.remove(log_listener)