Files
TwitchDropsMiner/src/web/managers/console.py
github-actions[bot] 62c0dd5663 feat:
- add date to console log
- add timezone to logger
- use python-alpine to make image size less than 1/10
2025-11-07 21:59:38 +11:00

44 lines
1.3 KiB
Python

"""Console output manager for logging to web interface."""
from __future__ import annotations
import asyncio
from collections import deque
from datetime import datetime
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from src.web.managers.broadcaster import WebSocketBroadcaster
class ConsoleOutputManager:
"""Manages console output display in the web interface.
Buffers log messages and broadcasts them to connected clients in real-time,
maintaining a rolling history of recent messages.
"""
def __init__(self, broadcaster: WebSocketBroadcaster, max_lines: int = 1000):
self._broadcaster = broadcaster
self._buffer: deque[str] = deque(maxlen=max_lines)
def print(self, message: str):
"""Print a message to the console output with timestamp.
Args:
message: The message to display
"""
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
line = f"[{timestamp}] | {message}"
self._buffer.append(line)
asyncio.create_task(self._broadcaster.emit("console_output", {"message": line}))
def get_history(self) -> list[str]:
"""Get the current console history buffer.
Returns:
List of timestamped console messages
"""
return list(self._buffer)