Add logs page.
This commit is contained in:
+18
-1
@@ -1,5 +1,6 @@
|
|||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
|
from collections import deque
|
||||||
|
|
||||||
from telebot import logger
|
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)
|
logging.basicConfig(level=logging.INFO, format="%(asctime)s %(message)s", datefmt="%Y-%m-%d %H:%M:%S", force=True)
|
||||||
logger.setLevel(logging.ERROR)
|
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 asyncio
|
||||||
|
import html
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
import telebot
|
import telebot
|
||||||
from fastapi import FastAPI
|
from fastapi import FastAPI
|
||||||
|
from starlette.responses import HTMLResponse
|
||||||
|
|
||||||
from .commands import bot
|
from .commands import bot
|
||||||
from .config import TOKEN
|
from .config import TOKEN, log_buffer
|
||||||
|
|
||||||
logging.warning("[START] Webhook server")
|
logging.warning("[START] Webhook server")
|
||||||
app = FastAPI(docs=None, redoc_url=None)
|
app = FastAPI(docs=None, redoc_url=None)
|
||||||
@@ -22,6 +24,27 @@ async def webhook(update: dict):
|
|||||||
return None
|
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")
|
@app.get("/healthz")
|
||||||
async def healthcheck():
|
async def healthcheck():
|
||||||
"""Проверка здоровья для Docker."""
|
"""Проверка здоровья для Docker."""
|
||||||
|
|||||||
Reference in New Issue
Block a user