fix(module): 日志读取添加兜底机制
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
@@ -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日志"""
|
||||||
|
|
||||||
|
|||||||
@@ -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:
|
||||||
"""开始监视通用脚本日志"""
|
"""开始监视通用脚本日志"""
|
||||||
|
|
||||||
|
|||||||
@@ -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": {
|
||||||
"新增功能": [
|
"新增功能": [
|
||||||
"通用脚本支持在选定的时机自动更新配置文件"
|
"通用脚本支持在选定的时机自动更新配置文件"
|
||||||
|
|||||||
Reference in New Issue
Block a user