fix(module): 日志读取添加兜底机制

This commit is contained in:
DLmaster361
2025-07-19 10:13:48 +08:00
parent 63ffacff96
commit fd72d72692
4 changed files with 102 additions and 52 deletions

View File

@@ -713,7 +713,7 @@ class GeneralSubConfig(LQConfig):
class AppConfig(GlobalConfig): class AppConfig(GlobalConfig):
VERSION = "4.4.1.1" VERSION = "4.4.1.2"
stage_refreshed = Signal() stage_refreshed = Signal()
PASSWORD_refreshed = Signal() PASSWORD_refreshed = Signal()

View File

@@ -89,6 +89,8 @@ class MaaManager(QObject):
self.monitor_loop = QEventLoop() self.monitor_loop = QEventLoop()
self.log_start_time = datetime.now() self.log_start_time = datetime.now()
self.log_check_mode = None self.log_check_mode = None
self.maa_logs = []
self.maa_result = "Wait"
self.maa_process_manager.processClosed.connect(self.check_maa_log) self.maa_process_manager.processClosed.connect(self.check_maa_log)
@@ -710,7 +712,7 @@ class MaaManager(QObject):
if_six_star = Config.save_maa_log( if_six_star = Config.save_maa_log(
Config.app_path Config.app_path
/ f"history/{curdate}/{user_data["Info"]["Name"]}/{self.log_start_time.strftime("%H-%M-%S")}.log", / 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, self.maa_result,
) )
user_logs_list.append( user_logs_list.append(
@@ -1191,33 +1193,52 @@ class MaaManager(QObject):
logger.info("触发 1 分钟超时检查", module=f"MAA调度器-{self.name}") logger.info("触发 1 分钟超时检查", module=f"MAA调度器-{self.name}")
self.check_maa_log() self.check_maa_log()
def check_maa_log(self) -> list: def check_maa_log(self) -> None:
"""获取MAA日志并检查以判断MAA程序运行状态""" """获取MAA日志并检查以判断MAA程序运行状态"""
self.last_check_time = datetime.now() self.last_check_time = datetime.now()
# 获取日志 # 获取日志
logs = [] self.maa_logs = []
if_log_start = False if_log_start = False
with self.maa_log_path.open(mode="r", encoding="utf-8") as f:
for entry in f: try:
if not if_log_start: with self.maa_log_path.open(mode="r", encoding="utf-8") as f:
try: for entry in f:
entry_time = datetime.strptime(entry[1:20], "%Y-%m-%d %H:%M:%S") if not if_log_start:
if entry_time > self.log_start_time: try:
if_log_start = True entry_time = datetime.strptime(
logs.append(entry) entry[1:20], "%Y-%m-%d %H:%M:%S"
except ValueError: )
pass if entry_time > self.log_start_time:
else: if_log_start = True
logs.append(entry) self.maa_logs.append(entry)
log = "".join(logs) 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日志 # 更新MAA日志
if len(logs) > 100: if len(self.maa_logs) > 100:
self.update_log_text.emit("".join(logs[-100:])) self.update_log_text.emit("".join(self.maa_logs[-100:]))
else: else:
self.update_log_text.emit("".join(logs)) self.update_log_text.emit("".join(self.maa_logs))
# 获取MAA版本号 # 获取MAA版本号
if not self.set["RunSet"]["AutoUpdateMaa"] and not self.maa_version: if not self.set["RunSet"]["AutoUpdateMaa"] and not self.maa_version:
@@ -1240,7 +1261,7 @@ class MaaManager(QObject):
# 获取最近一条日志的时间 # 获取最近一条日志的时间
latest_time = self.log_start_time latest_time = self.log_start_time
for _ in logs[::-1]: for _ in self.maa_logs[::-1]:
try: try:
if "如果长时间无进一步日志更新,可能需要手动干预。" in _: if "如果长时间无进一步日志更新,可能需要手动干预。" in _:
continue continue
@@ -1356,8 +1377,6 @@ class MaaManager(QObject):
self.quit_monitor() self.quit_monitor()
return logs
def start_monitor(self) -> None: def start_monitor(self) -> None:
"""开始监视MAA日志""" """开始监视MAA日志"""

View File

@@ -86,6 +86,8 @@ class GeneralManager(QObject):
self.log_monitor_timer.timeout.connect(self.refresh_log) self.log_monitor_timer.timeout.connect(self.refresh_log)
self.monitor_loop = QEventLoop() self.monitor_loop = QEventLoop()
self.loge_start_time = datetime.now() self.loge_start_time = datetime.now()
self.script_logs = []
self.script_result = "Wait"
self.script_process_manager.processClosed.connect(self.check_script_log) self.script_process_manager.processClosed.connect(self.check_script_log)
@@ -486,7 +488,7 @@ class GeneralManager(QObject):
Config.save_general_log( Config.save_general_log(
Config.app_path Config.app_path
/ f"history/{curdate}/{sub_data['Info']['Name']}/{self.log_start_time.strftime("%H-%M-%S")}.log", / 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, self.script_result,
) )
@@ -702,8 +704,17 @@ class GeneralManager(QObject):
module=f"通用调度器-{self.name}", module=f"通用调度器-{self.name}",
) )
with self.script_log_path.open(mode="r", encoding="utf-8") as f: try:
pass 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: if (datetime.now() - self.last_check_time).total_seconds() > 60:
@@ -738,44 +749,61 @@ class GeneralManager(QObject):
return datetime(**datetime_kwargs) return datetime(**datetime_kwargs)
def check_script_log(self) -> list: def check_script_log(self) -> None:
"""获取脚本日志并检查以判断脚本程序运行状态""" """获取脚本日志并检查以判断脚本程序运行状态"""
self.last_check_time = datetime.now() self.last_check_time = datetime.now()
# 获取日志 # 获取日志
logs = [] self.script_logs = []
if_log_start = False 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: try:
if_log_start = True with self.script_log_path.open(mode="r", encoding="utf-8") as f:
logs.append(entry) for entry in f:
except ValueError: if not if_log_start:
pass try:
else: entry_time = self.strptime(
logs.append(entry) entry[self.log_time_range[0] : self.log_time_range[1]],
log = "".join(logs) 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: if len(self.script_logs) > 100:
self.update_log_text.emit("".join(logs[-100:])) self.update_log_text.emit("".join(self.script_logs[-100:]))
else: else:
self.update_log_text.emit("".join(logs)) self.update_log_text.emit("".join(self.script_logs))
if "自动代理" in self.mode: if "自动代理" in self.mode:
# 获取最近一条日志的时间 # 获取最近一条日志的时间
latest_time = self.log_start_time latest_time = self.log_start_time
for _ in logs[::-1]: for _ in self.script_logs[::-1]:
try: try:
latest_time = self.strptime( latest_time = self.strptime(
_[self.log_time_range[0] : self.log_time_range[1]], _[self.log_time_range[0] : self.log_time_range[1]],
@@ -831,8 +859,6 @@ class GeneralManager(QObject):
self.quit_monitor() self.quit_monitor()
return logs
def start_monitor(self) -> None: def start_monitor(self) -> None:
"""开始监视通用脚本日志""" """开始监视通用脚本日志"""

View File

@@ -1,6 +1,11 @@
{ {
"main_version": "4.4.1.1", "main_version": "4.4.1.2",
"version_info": { "version_info": {
"4.4.1.2": {
"修复BUG": [
"日志读取添加兜底机制"
]
},
"4.4.1.1": { "4.4.1.1": {
"新增功能": [ "新增功能": [
"通用脚本支持在选定的时机自动更新配置文件" "通用脚本支持在选定的时机自动更新配置文件"