LogDisplayer / main.py
Jiang
Update main.py
7747dc2 unverified
from fastapi import FastAPI, Body, Header, Request, Query
from fastapi.middleware.cors import CORSMiddleware
from utils import beijing, parse_token
from logging_helper import LoggingHelper
from fastapi.templating import Jinja2Templates
import datetime
app = FastAPI(
title=f"Log Displayer",
description=f"Updated at {beijing()}",
)
print("Adding middlewares...", end="")
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
print("Done\n")
LOGS_REPO_ID = "pgsoft/logs"
local_dir = "data/logs"
logger = LoggingHelper(
repo_id=LOGS_REPO_ID,
local_dir=local_dir,
)
@app.post("/{end}")
async def add_log(
end: str,
message: str = Body(..., embed=True),
token: str | None = Header(None),
source: str | None = Header("web"),
):
print("Type: ", end)
print("From: ", source)
print("Token: ", token)
uid, username = parse_token(token)
timestamp = beijing().isoformat()
print("Timestamp: ", timestamp)
print("Message: ", message)
log = {
"type": end,
"source": source,
"uid": uid,
"username": username,
"token": token,
"content": message,
"timestamp": timestamp,
}
logger.addlog(log)
return True
@app.get("/healthcheck")
async def health_check():
return True
templates = Jinja2Templates(directory="static")
@app.get("")
@app.get("/")
async def root(
request: Request,
from_date: str | None = Query(None),
to_date: str | None = Query(None),
):
"""
首页端点,支持日期范围查询
查询参数:
- from_date: 开始日期(格式:YYYY-MM-DD),不指定时默认加载今天
- to_date: 结束日期(格式:YYYY-MM-DD),不指定时默认为今天
"""
# 如果没有指定日期范围,默认加载今天的日志
if from_date is None and to_date is None:
today = beijing().date().strftime("%Y-%m-%d")
from_date = today # 今天的日志
to_date = today
print(f"[root] No date range specified, using today: {from_date} to {to_date}")
data = logger.refresh(from_date=from_date, to_date=to_date)
return templates.TemplateResponse(
"index.html",
{"request": request, "data": data},
)