diff --git a/app/api/endpoints/system.py b/app/api/endpoints/system.py index 4c542259..243021d3 100644 --- a/app/api/endpoints/system.py +++ b/app/api/endpoints/system.py @@ -1,5 +1,6 @@ import json import time +import tailer from datetime import datetime from typing import Union @@ -86,6 +87,26 @@ def get_progress(token: str): return StreamingResponse(event_generator(), media_type="text/event-stream") +@router.get("/logging", summary="实时日志") +def get_logging(token: str): + """ + 实时获取系统日志,返回格式为SSE + """ + if not token or not verify_token(token): + raise HTTPException( + status_code=403, + detail="认证失败!", + ) + + def log_generator(): + while True: + for text in tailer.follow(open(settings.LOG_PATH / 'moviepilot.log')): + yield 'data: %s\n\n' % (text or '') + time.sleep(1) + + return StreamingResponse(log_generator(), media_type="text/event-stream") + + @router.get("/nettest", summary="测试网络连通性") def nettest(url: str, proxy: bool, diff --git a/requirements.txt b/requirements.txt index 4e8941c3..086a97eb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -45,4 +45,5 @@ tvdb_api~=3.1 psutil~=5.9.4 python_hosts~=1.0.3 tmdbv3api~=1.7.7 -watchdog~=3.0.0 \ No newline at end of file +watchdog~=3.0.0 +tailer~=0.4.1 \ No newline at end of file