diff --git a/monitor/service_update_jobs.py b/monitor/service_update_jobs.py index 4c5cfff..d543e13 100644 --- a/monitor/service_update_jobs.py +++ b/monitor/service_update_jobs.py @@ -19,8 +19,6 @@ from .service_release import deploy_updated_services_payload # 内存里最多保留最近若干次更新记录,避免 deploy 机常驻进程越跑越大。 MAX_UPDATE_OPERATIONS = 20 -# 单次更新最多保留最近这些日志行,超出后丢弃最旧的。 -MAX_UPDATE_LOG_LINES = 1200 # 任务状态和完整日志统一落到 run 目录。 UPDATE_JOB_DIR = ROOT / "run" / "service_update_jobs" # 统一保护任务状态的锁。 @@ -115,10 +113,6 @@ def recover_lost_running_job_unlocked(payload: dict[str, Any]) -> None: "message": message, } ) - if len(payload["logs"]) > MAX_UPDATE_LOG_LINES: - overflow = len(payload["logs"]) - MAX_UPDATE_LOG_LINES - payload["logs"] = payload["logs"][overflow:] - payload["logDroppedCount"] = int(payload.get("logDroppedCount") or 0) + overflow append_log_file(payload["operationId"], f"[{now}] [failed] [error] {message}\n") persist_job_unlocked(payload) @@ -208,7 +202,7 @@ def trim_jobs_unlocked() -> None: def append_job_log(operation_id: str, stage: str, message: str, *, level: str = "info") -> None: - # 每条日志都带时间和阶段,页面可以直接展示。 + # 每条日志都带时间和阶段,页面和状态文件都保留完整日志。 text = str(message or "").rstrip() if not text: return @@ -228,10 +222,6 @@ def append_job_log(operation_id: str, stage: str, message: str, *, level: str = "message": text, } ) - if len(payload["logs"]) > MAX_UPDATE_LOG_LINES: - overflow = len(payload["logs"]) - MAX_UPDATE_LOG_LINES - payload["logs"] = payload["logs"][overflow:] - payload["logDroppedCount"] = int(payload.get("logDroppedCount") or 0) + overflow append_log_file( operation_id, f"[{payload['updatedAt']}] [{str(stage or '').strip() or payload['stage']}] [{str(level or 'info').strip() or 'info'}] {text}\n", diff --git a/static/index.html b/static/index.html index 200ea09..b0a3dbb 100644 --- a/static/index.html +++ b/static/index.html @@ -494,7 +494,6 @@ 阶段:{{ updateOps.stage || '-' }} 开始:{{ formatDateTime(updateOps.startedAt) }} 结束:{{ formatDateTime(updateOps.finishedAt) }} - 已截断 {{ updateOps.logDroppedCount }} 行旧日志