From 0bca7b224780a2db30c62760be8a52a9bd3c64a2 Mon Sep 17 00:00:00 2001 From: Rock Chin <1010553892@qq.com> Date: Fri, 14 Apr 2023 18:42:09 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=BE=AA=E7=8E=AF=E5=BC=95=E7=94=A8?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E7=9A=84=E4=BE=9D=E8=B5=96=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 62 ++----------------------------- pkg/plugin/host.py | 4 +- pkg/qqbot/cmds/plugin/plugin.py | 4 +- pkg/utils/log.py | 66 +++++++++++++++++++++++++++++++++ pkg/utils/pkgmgr.py | 12 ++++-- 5 files changed, 81 insertions(+), 67 deletions(-) create mode 100644 pkg/utils/log.py diff --git a/main.py b/main.py index 988f76ab..1c91d735 100644 --- a/main.py +++ b/main.py @@ -11,6 +11,8 @@ import traceback sys.path.append(".") +from pkg.utils.log import init_runtime_log_file, reset_logging + try: import colorlog except ImportError: @@ -18,6 +20,7 @@ except ImportError: import pkg.utils.pkgmgr as pkgmgr try: pkgmgr.install_requirements("requirements.txt") + pkgmgr.install_upgrade("websockets") import colorlog except ImportError: print("依赖不满足,请查看 https://github.com/RockChinQ/qcg-installer/issues/15") @@ -30,15 +33,6 @@ from urllib3.exceptions import InsecureRequestWarning import pkg.utils.context -log_colors_config = { - 'DEBUG': 'green', # cyan white - 'INFO': 'white', - 'WARNING': 'yellow', - 'ERROR': 'red', - 'CRITICAL': 'cyan', -} - - # 是否使用override.json覆盖配置 # 仅在启动时提供 --override 或 -r 参数时生效 use_override = False @@ -60,56 +54,6 @@ def ensure_dependencies(): known_exception_caught = False -log_file_name = "qchatgpt.log" - - -def init_runtime_log_file(): - """为此次运行生成日志文件 - 格式: qchatgpt-yyyy-MM-dd-HH-mm-ss.log - """ - global log_file_name - - # 检查logs目录是否存在 - if not os.path.exists("logs"): - os.mkdir("logs") - - # 检查本目录是否有qchatgpt.log,若有,移动到logs目录 - if os.path.exists("qchatgpt.log"): - shutil.move("qchatgpt.log", "logs/qchatgpt.legacy.log") - - log_file_name = "logs/qchatgpt-%s.log" % time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime()) - - -def reset_logging(): - global log_file_name - - import config - - if pkg.utils.context.context['logger_handler'] is not None: - logging.getLogger().removeHandler(pkg.utils.context.context['logger_handler']) - - for handler in logging.getLogger().handlers: - logging.getLogger().removeHandler(handler) - - logging.basicConfig(level=config.logging_level, # 设置日志输出格式 - filename=log_file_name, # log日志输出的文件位置和文件名 - format="[%(asctime)s.%(msecs)03d] %(filename)s (%(lineno)d) - [%(levelname)s] : %(message)s", - # 日志输出的格式 - # -8表示占位符,让输出左对齐,输出长度都为8位 - datefmt="%Y-%m-%d %H:%M:%S" # 时间输出的格式 - ) - sh = logging.StreamHandler() - sh.setLevel(config.logging_level) - sh.setFormatter(colorlog.ColoredFormatter( - fmt="%(log_color)s[%(asctime)s.%(msecs)03d] %(filename)s (%(lineno)d) - [%(levelname)s] : " - "%(message)s", - datefmt="%Y-%m-%d %H:%M:%S", - log_colors=log_colors_config - )) - logging.getLogger().addHandler(sh) - pkg.utils.context.context['logger_handler'] = sh - return sh - def override_config(): import config diff --git a/pkg/plugin/host.py b/pkg/plugin/host.py index ebb7407a..4655870f 100644 --- a/pkg/plugin/host.py +++ b/pkg/plugin/host.py @@ -156,8 +156,8 @@ def install_plugin(repo_url: str): import pkg.utils.pkgmgr pkg.utils.pkgmgr.install_requirements("plugins/"+repo_url.split(".git")[0].split("/")[-1]+"/requirements.txt") - import main - main.reset_logging() + import pkg.utils.log as log + log.reset_logging() def uninstall_plugin(plugin_name: str) -> str: diff --git a/pkg/qqbot/cmds/plugin/plugin.py b/pkg/qqbot/cmds/plugin/plugin.py index 9e99546d..b5f3e6e6 100644 --- a/pkg/qqbot/cmds/plugin/plugin.py +++ b/pkg/qqbot/cmds/plugin/plugin.py @@ -117,8 +117,8 @@ class PluginUpdateCommand(AbstractCommandNode): import pkg.utils.pkgmgr pkg.utils.pkgmgr.install_requirements("/".join(plugin['path'].split('/')[:-1])+"/requirements.txt") - import main - main.reset_logging() + import pkg.utils.log as log + log.reset_logging() pkg.utils.context.get_qqbot_manager().notify_admin("已更新插件: {}".format(", ".join(updated))) except Exception as e: diff --git a/pkg/utils/log.py b/pkg/utils/log.py new file mode 100644 index 00000000..2666616e --- /dev/null +++ b/pkg/utils/log.py @@ -0,0 +1,66 @@ +import os +import time +import logging +import shutil + + +log_file_name = "qchatgpt.log" + + +log_colors_config = { + 'DEBUG': 'green', # cyan white + 'INFO': 'white', + 'WARNING': 'yellow', + 'ERROR': 'red', + 'CRITICAL': 'cyan', +} + + +def init_runtime_log_file(): + """为此次运行生成日志文件 + 格式: qchatgpt-yyyy-MM-dd-HH-mm-ss.log + """ + global log_file_name + + # 检查logs目录是否存在 + if not os.path.exists("logs"): + os.mkdir("logs") + + # 检查本目录是否有qchatgpt.log,若有,移动到logs目录 + if os.path.exists("qchatgpt.log"): + shutil.move("qchatgpt.log", "logs/qchatgpt.legacy.log") + + log_file_name = "logs/qchatgpt-%s.log" % time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime()) + + +def reset_logging(): + global log_file_name + + import config + import pkg.utils.context + import colorlog + + if pkg.utils.context.context['logger_handler'] is not None: + logging.getLogger().removeHandler(pkg.utils.context.context['logger_handler']) + + for handler in logging.getLogger().handlers: + logging.getLogger().removeHandler(handler) + + logging.basicConfig(level=config.logging_level, # 设置日志输出格式 + filename=log_file_name, # log日志输出的文件位置和文件名 + format="[%(asctime)s.%(msecs)03d] %(filename)s (%(lineno)d) - [%(levelname)s] : %(message)s", + # 日志输出的格式 + # -8表示占位符,让输出左对齐,输出长度都为8位 + datefmt="%Y-%m-%d %H:%M:%S" # 时间输出的格式 + ) + sh = logging.StreamHandler() + sh.setLevel(config.logging_level) + sh.setFormatter(colorlog.ColoredFormatter( + fmt="%(log_color)s[%(asctime)s.%(msecs)03d] %(filename)s (%(lineno)d) - [%(levelname)s] : " + "%(message)s", + datefmt="%Y-%m-%d %H:%M:%S", + log_colors=log_colors_config + )) + logging.getLogger().addHandler(sh) + pkg.utils.context.context['logger_handler'] = sh + return sh diff --git a/pkg/utils/pkgmgr.py b/pkg/utils/pkgmgr.py index 010b9ca2..55687ff7 100644 --- a/pkg/utils/pkgmgr.py +++ b/pkg/utils/pkgmgr.py @@ -1,21 +1,25 @@ from pip._internal import main as pipmain -import main +import pkg.utils.log as log def install(package): pipmain(['install', package]) - main.reset_logging() + log.reset_logging() + +def install_upgrade(package): + pipmain(['install', '--upgrade', package]) + log.reset_logging() def run_pip(params: list): pipmain(params) - main.reset_logging() + log.reset_logging() def install_requirements(file): pipmain(['install', '-r', file, "--upgrade"]) - main.reset_logging() + log.reset_logging() def ensure_dulwich():