diff --git a/src/main.py b/src/main.py index 5de80d1a..c17909f0 100644 --- a/src/main.py +++ b/src/main.py @@ -3,19 +3,30 @@ import logging import uvicorn from module.api import router -from module.conf import settings -from module.conf.uvicorn_logging import logging_config +from module.conf import settings, setup_logger from module.core import reset_log - +log_level = logging.INFO +setup_logger(log_level) logger = logging.getLogger(__name__) +uvicorn_logging_config = { + "version": 1, + "disable_existing_loggers": False, + "handlers": logger.handlers, + "loggers": { + "uvicorn": { + "level": log_level, + }, +}} + if __name__ == "__main__": if not os.path.isdir("data"): os.mkdir("data") reset_log() uvicorn.run( router, host="0.0.0.0", port=settings.program.webui_port, - log_config=logging_config, + log_config=uvicorn_logging_config, ) + diff --git a/src/module/api/api.py b/src/module/api/api.py index 20e9dab4..b64cd1e6 100644 --- a/src/module/api/api.py +++ b/src/module/api/api.py @@ -2,7 +2,7 @@ import logging import os from fastapi import FastAPI -from fastapi.responses import FileResponse, Response +from fastapi.responses import Response from module.conf import LOG_PATH diff --git a/src/module/api/program.py b/src/module/api/program.py index 9ef9eb2b..63bd9187 100644 --- a/src/module/api/program.py +++ b/src/module/api/program.py @@ -1,11 +1,11 @@ import os import signal import logging +import asyncio from .download import router from module.core import start_thread, start_program, stop_thread, stop_event -from module.conf import settings, setup_logger logger = logging.getLogger(__name__) @@ -13,9 +13,7 @@ logger = logging.getLogger(__name__) @router.on_event("startup") async def startup(): - log_level = logging.DEBUG if settings.log.debug_enable else logging.INFO - setup_logger(log_level) - start_program() + await start_program() @router.on_event("shutdown") @@ -58,3 +56,24 @@ async def shutdown_program(): os.kill(os.getpid(), signal.SIGINT) return {"status": "ok"} + +@router.get("/api/v1/setLog/{log_level}", tags=["program"]) +async def set_log_level(log_level: str): + if log_level == "DEBUG": + logger.setLevel(logging.DEBUG) + logger.debug("Log level set to DEBUG") + elif log_level == "INFO": + logger.setLevel(logging.INFO) + logger.info("Log level set to INFO") + elif log_level == "WARNING": + logger.setLevel(logging.WARNING) + logger.warning("Log level set to WARNING") + elif log_level == "ERROR": + logger.setLevel(logging.ERROR) + logger.error("Log level set to ERROR") + elif log_level == "CRITICAL": + logger.setLevel(logging.CRITICAL) + logger.critical("Log level set to CRITICAL") + else: + return {"status": "invalid log level"} + return {"status": "ok"} \ No newline at end of file diff --git a/src/module/conf/uvicorn_logging.py b/src/module/conf/uvicorn_logging.py index 408cb305..e3d06e82 100644 --- a/src/module/conf/uvicorn_logging.py +++ b/src/module/conf/uvicorn_logging.py @@ -27,7 +27,7 @@ logging_config = { "level": "INFO", }, "uvicorn.error": { - "level": "INFO", + "level": "WARNING", }, "uvicorn.access": { "handlers": ["console"], diff --git a/src/module/core/sub_thread.py b/src/module/core/sub_thread.py index e510a97a..297ac179 100644 --- a/src/module/core/sub_thread.py +++ b/src/module/core/sub_thread.py @@ -83,7 +83,7 @@ def start_thread(): return {"status": "ok"} -def start_program(): +async def start_program(): global rss_thread, rename_thread start_info() if not os.path.exists(DATA_PATH): diff --git a/src/module/downloader/client/qb_downloader.py b/src/module/downloader/client/qb_downloader.py index f503e8a2..ec23e4c6 100644 --- a/src/module/downloader/client/qb_downloader.py +++ b/src/module/downloader/client/qb_downloader.py @@ -17,6 +17,7 @@ class QbDownloader: username=username, password=password, VERIFY_WEBUI_CERTIFICATE=ssl, + DISABLE_LOGGING_DEBUG_OUTPUT=True ) self.host = host self.username = username