From fd72d72692b2471cc1e915a78491d0fc92775a88 Mon Sep 17 00:00:00 2001 From: DLmaster361 Date: Sat, 19 Jul 2025 10:13:48 +0800 Subject: [PATCH] =?UTF-8?q?fix(module):=20=E6=97=A5=E5=BF=97=E8=AF=BB?= =?UTF-8?q?=E5=8F=96=E6=B7=BB=E5=8A=A0=E5=85=9C=E5=BA=95=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/core/config.py | 2 +- app/models/MAA.py | 63 ++++++++++++++++++++------------ app/models/general.py | 82 +++++++++++++++++++++++++++--------------- resources/version.json | 7 +++- 4 files changed, 102 insertions(+), 52 deletions(-) diff --git a/app/core/config.py b/app/core/config.py index 0415dee..76e8bfe 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -713,7 +713,7 @@ class GeneralSubConfig(LQConfig): class AppConfig(GlobalConfig): - VERSION = "4.4.1.1" + VERSION = "4.4.1.2" stage_refreshed = Signal() PASSWORD_refreshed = Signal() diff --git a/app/models/MAA.py b/app/models/MAA.py index 4d44e49..60565e2 100644 --- a/app/models/MAA.py +++ b/app/models/MAA.py @@ -89,6 +89,8 @@ class MaaManager(QObject): self.monitor_loop = QEventLoop() self.log_start_time = datetime.now() self.log_check_mode = None + self.maa_logs = [] + self.maa_result = "Wait" self.maa_process_manager.processClosed.connect(self.check_maa_log) @@ -710,7 +712,7 @@ class MaaManager(QObject): if_six_star = Config.save_maa_log( Config.app_path / f"history/{curdate}/{user_data["Info"]["Name"]}/{self.log_start_time.strftime("%H-%M-%S")}.log", - self.check_maa_log(), + self.maa_logs, self.maa_result, ) user_logs_list.append( @@ -1191,33 +1193,52 @@ class MaaManager(QObject): logger.info("触发 1 分钟超时检查", module=f"MAA调度器-{self.name}") self.check_maa_log() - def check_maa_log(self) -> list: + def check_maa_log(self) -> None: """获取MAA日志并检查以判断MAA程序运行状态""" self.last_check_time = datetime.now() # 获取日志 - logs = [] + self.maa_logs = [] if_log_start = False - with self.maa_log_path.open(mode="r", encoding="utf-8") as f: - for entry in f: - if not if_log_start: - try: - entry_time = datetime.strptime(entry[1:20], "%Y-%m-%d %H:%M:%S") - if entry_time > self.log_start_time: - if_log_start = True - logs.append(entry) - except ValueError: - pass - else: - logs.append(entry) - log = "".join(logs) + + try: + with self.maa_log_path.open(mode="r", encoding="utf-8") as f: + for entry in f: + if not if_log_start: + try: + entry_time = datetime.strptime( + entry[1:20], "%Y-%m-%d %H:%M:%S" + ) + if entry_time > self.log_start_time: + if_log_start = True + self.maa_logs.append(entry) + except ValueError: + pass + else: + self.maa_logs.append(entry) + except FileNotFoundError: + logger.error( + f"MAA日志文件不存在:{self.maa_log_path}", + module=f"MAA调度器-{self.name}", + ) + self.update_log_text.emit("MAA日志文件不存在") + return None + except Exception as e: + logger.exception( + f"读取MAA日志文件时出现异常:{e}", + module=f"MAA调度器-{self.name}", + ) + self.update_log_text.emit(f"读取MAA日志文件时出现异常:{e}") + return None + + log = "".join(self.maa_logs) # 更新MAA日志 - if len(logs) > 100: - self.update_log_text.emit("".join(logs[-100:])) + if len(self.maa_logs) > 100: + self.update_log_text.emit("".join(self.maa_logs[-100:])) else: - self.update_log_text.emit("".join(logs)) + self.update_log_text.emit("".join(self.maa_logs)) # 获取MAA版本号 if not self.set["RunSet"]["AutoUpdateMaa"] and not self.maa_version: @@ -1240,7 +1261,7 @@ class MaaManager(QObject): # 获取最近一条日志的时间 latest_time = self.log_start_time - for _ in logs[::-1]: + for _ in self.maa_logs[::-1]: try: if "如果长时间无进一步日志更新,可能需要手动干预。" in _: continue @@ -1356,8 +1377,6 @@ class MaaManager(QObject): self.quit_monitor() - return logs - def start_monitor(self) -> None: """开始监视MAA日志""" diff --git a/app/models/general.py b/app/models/general.py index f48b525..c586e06 100644 --- a/app/models/general.py +++ b/app/models/general.py @@ -86,6 +86,8 @@ class GeneralManager(QObject): self.log_monitor_timer.timeout.connect(self.refresh_log) self.monitor_loop = QEventLoop() self.loge_start_time = datetime.now() + self.script_logs = [] + self.script_result = "Wait" self.script_process_manager.processClosed.connect(self.check_script_log) @@ -486,7 +488,7 @@ class GeneralManager(QObject): Config.save_general_log( Config.app_path / f"history/{curdate}/{sub_data['Info']['Name']}/{self.log_start_time.strftime("%H-%M-%S")}.log", - self.check_script_log(), + self.script_logs, self.script_result, ) @@ -702,8 +704,17 @@ class GeneralManager(QObject): module=f"通用调度器-{self.name}", ) - with self.script_log_path.open(mode="r", encoding="utf-8") as f: - pass + try: + with self.script_log_path.open(mode="r", encoding="utf-8") as f: + pass + + except FileNotFoundError: + logger.error( + f"脚本日志文件不存在:{self.script_log_path}", + module=f"通用调度器-{self.name}", + ) + except Exception as e: + logger.exception(f"刷新脚本日志失败:{e}", module=f"通用调度器-{self.name}") # 一分钟内未执行日志变化检查,强制检查一次 if (datetime.now() - self.last_check_time).total_seconds() > 60: @@ -738,44 +749,61 @@ class GeneralManager(QObject): return datetime(**datetime_kwargs) - def check_script_log(self) -> list: + def check_script_log(self) -> None: """获取脚本日志并检查以判断脚本程序运行状态""" self.last_check_time = datetime.now() # 获取日志 - logs = [] + self.script_logs = [] if_log_start = False - with self.script_log_path.open(mode="r", encoding="utf-8") as f: - for entry in f: - if not if_log_start: - try: - entry_time = self.strptime( - entry[self.log_time_range[0] : self.log_time_range[1]], - self.set["Script"]["LogTimeFormat"], - self.last_check_time, - ) - if entry_time > self.log_start_time: - if_log_start = True - logs.append(entry) - except ValueError: - pass - else: - logs.append(entry) - log = "".join(logs) + try: + with self.script_log_path.open(mode="r", encoding="utf-8") as f: + for entry in f: + if not if_log_start: + try: + entry_time = self.strptime( + entry[self.log_time_range[0] : self.log_time_range[1]], + self.set["Script"]["LogTimeFormat"], + self.last_check_time, + ) + + if entry_time > self.log_start_time: + if_log_start = True + self.script_logs.append(entry) + except ValueError: + pass + else: + self.script_logs.append(entry) + + except FileNotFoundError: + logger.error( + f"脚本日志文件不存在:{self.script_log_path}", + module=f"通用调度器-{self.name}", + ) + self.update_log_text.emit("脚本日志文件不存在") + return None + except Exception as e: + logger.exception( + f"读取脚本日志文件失败:{e}", module=f"通用调度器-{self.name}" + ) + self.update_log_text.emit(f"读取脚本日志文件失败:{e}") + return None + + log = "".join(self.script_logs) # 更新日志 - if len(logs) > 100: - self.update_log_text.emit("".join(logs[-100:])) + if len(self.script_logs) > 100: + self.update_log_text.emit("".join(self.script_logs[-100:])) else: - self.update_log_text.emit("".join(logs)) + self.update_log_text.emit("".join(self.script_logs)) if "自动代理" in self.mode: # 获取最近一条日志的时间 latest_time = self.log_start_time - for _ in logs[::-1]: + for _ in self.script_logs[::-1]: try: latest_time = self.strptime( _[self.log_time_range[0] : self.log_time_range[1]], @@ -831,8 +859,6 @@ class GeneralManager(QObject): self.quit_monitor() - return logs - def start_monitor(self) -> None: """开始监视通用脚本日志""" diff --git a/resources/version.json b/resources/version.json index 6fe8240..2fb0af9 100644 --- a/resources/version.json +++ b/resources/version.json @@ -1,6 +1,11 @@ { - "main_version": "4.4.1.1", + "main_version": "4.4.1.2", "version_info": { + "4.4.1.2": { + "修复BUG": [ + "日志读取添加兜底机制" + ] + }, "4.4.1.1": { "新增功能": [ "通用脚本支持在选定的时机自动更新配置文件"