Add logs page.
This commit is contained in:
+18
-1
@@ -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
@@ -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."""
|
||||
|
||||
Reference in New Issue
Block a user