Add logs page.

This commit is contained in:
Rykov
2025-12-25 01:10:20 +03:00
parent d36b8e7118
commit d9ebcefc5e
2 changed files with 42 additions and 2 deletions
+18 -1
View File
@@ -1,5 +1,6 @@
import logging
import os
from collections import deque
from telebot import logger
@@ -21,4 +22,20 @@ if not is_url_reachable(RULES_URL):
logging.basicConfig(level=logging.INFO, format="%(asctime)s %(message)s", datefmt="%Y-%m-%d %H:%M:%S", force=True)
logger.setLevel(logging.ERROR)
logging.critical(f'LOGGER {logging.getLogger()}: ')
# Лог в буфер для HTML:
log_buffer = deque(maxlen=1500)
class BufferHandler(logging.Handler):
def emit(self, record):
log_buffer.append(self.format(record))
buffer_handler = BufferHandler()
buffer_handler.setLevel(logging.ERROR)
buffer_handler.setFormatter(logging.Formatter(
"%(asctime)s %(levelname)s %(name)s | %(message)s",
datefmt="%Y-%m-%d %H:%M:%S"
))
logging.getLogger().addHandler(buffer_handler)
+24 -1
View File
@@ -1,12 +1,14 @@
import asyncio
import html
import logging
import requests
import telebot
from fastapi import FastAPI
from starlette.responses import HTMLResponse
from .commands import bot
from .config import TOKEN
from .config import TOKEN, log_buffer
logging.warning("[START] Webhook server")
app = FastAPI(docs=None, redoc_url=None)
@@ -22,6 +24,27 @@ async def webhook(update: dict):
return None
@app.get("/stan-logs", response_class=HTMLResponse)
def logs():
body = "<br>".join(html.escape(line) for line in log_buffer)
return f"""
<html>
<head>
<meta charset="utf-8">
<title>Stan Logs</title>
<style>
body {{
font-family: monospace;
background: #111;
color: #0f0;
}}
</style>
</head>
<body>{body}</body>
</html>
"""
@app.get("/healthz")
async def healthcheck():
"""Проверка здоровья для Docker."""