fix: keep full update logs

This commit is contained in:
hy 2026-04-22 19:21:43 +08:00
parent 0ed09f8e65
commit 2286988b90
2 changed files with 1 additions and 12 deletions

View File

@ -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",

View File

@ -494,7 +494,6 @@
<span class="badge neutral mono">阶段:{{ updateOps.stage || '-' }}</span>
<span class="badge neutral">开始:{{ formatDateTime(updateOps.startedAt) }}</span>
<span v-if="updateOps.finishedAt" class="badge neutral">结束:{{ formatDateTime(updateOps.finishedAt) }}</span>
<span v-if="updateOps.logDroppedCount > 0" class="badge warn">已截断 {{ updateOps.logDroppedCount }} 行旧日志</span>
</div>
<section v-if="updateOps.operationId || updateOps.running || updateOps.logs.length > 0" class="update-log-panel">