fix: keep full update logs
This commit is contained in:
parent
0ed09f8e65
commit
2286988b90
@ -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",
|
||||
|
||||
@ -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">
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user