Add HH:MM:SS timestamp to each log line in detail and log modals
Docker Build and Push / build-and-push (cuda, 12.6) (push) Has been skipped
Docker Build and Push / build-and-push (cuda, 11.8) (push) Has been skipped
Docker Build and Push / check-secrets (push) Successful in 4s
Docker Build and Push / build-and-push (cpu, latest) (push) Has been skipped
Docker Build and Push / build-and-push (directml, latest) (push) Has been skipped
Docker Build and Push / build-and-push (cuda, 12.8) (push) Has been skipped
Build Windows CPU / build (push) Has been cancelled
Build Windows CUDA 11.8 / build (push) Has been cancelled
Build Windows CUDA 12.6 / build (push) Has been cancelled
Build Windows CUDA 12.8 / build (push) Has been cancelled
Build Windows DirectML / build (push) Has been cancelled
Docker Build and Push / build-and-push (cuda, 12.6) (push) Has been skipped
Docker Build and Push / build-and-push (cuda, 11.8) (push) Has been skipped
Docker Build and Push / check-secrets (push) Successful in 4s
Docker Build and Push / build-and-push (cpu, latest) (push) Has been skipped
Docker Build and Push / build-and-push (directml, latest) (push) Has been skipped
Docker Build and Push / build-and-push (cuda, 12.8) (push) Has been skipped
Build Windows CPU / build (push) Has been cancelled
Build Windows CUDA 11.8 / build (push) Has been cancelled
Build Windows CUDA 12.6 / build (push) Has been cancelled
Build Windows CUDA 12.8 / build (push) Has been cancelled
Build Windows DirectML / build (push) Has been cancelled
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Haiku 4.5
parent
f21f844f0f
commit
b772ab3def
+17
-8
@@ -1127,16 +1127,24 @@ async function loadDetailLogs(taskId) {
|
||||
try {
|
||||
const d = await api(`/api/tasks/${taskId}/logs`);
|
||||
// 合并 DB 历史 + 内存实时日志(去重)
|
||||
const dbMsgs = d.logs?.map(l => l.message) || [];
|
||||
const memMsgs = (S.logs[taskId] || []).map(l => l.message);
|
||||
const extra = memMsgs.filter(m => !dbMsgs.includes(m));
|
||||
const all = [...dbMsgs, ...extra];
|
||||
const dbLogs = d.logs || [];
|
||||
const dbMsgs = dbLogs.map(l => l.message);
|
||||
const memEntries = (S.logs[taskId] || []).filter(l => !dbMsgs.includes(l.message));
|
||||
// 合并:DB 记录(含时间戳)+ 内存实时日志
|
||||
const all = [
|
||||
...dbLogs.map(l => ({ ts: l.ts, message: l.message })),
|
||||
...memEntries,
|
||||
];
|
||||
if (!all.length) {
|
||||
el.innerHTML = '<div style="color:var(--muted)">暂无日志</div>';
|
||||
} else {
|
||||
el.innerHTML = all.map(m => {
|
||||
const isErr = /error|failed|exception/i.test(m);
|
||||
return `<div style="${isErr ? 'color:var(--bad)' : ''}">${esc(m)}</div>`;
|
||||
el.innerHTML = all.map(entry => {
|
||||
const ts = entry.ts
|
||||
? new Date(typeof entry.ts === 'string' ? entry.ts + (entry.ts.includes('Z') || entry.ts.includes('+') ? '' : 'Z') : entry.ts * 1000)
|
||||
.toLocaleTimeString('zh-CN', {hour:'2-digit', minute:'2-digit', second:'2-digit'})
|
||||
: '--:--:--';
|
||||
const isErr = /error|failed|exception/i.test(entry.message);
|
||||
return `<div style="${isErr ? 'color:var(--bad)' : ''}"><span style="color:var(--muted);margin-right:10px;user-select:none">${ts}</span>${esc(entry.message)}</div>`;
|
||||
}).join('');
|
||||
el.scrollTop = el.scrollHeight;
|
||||
}
|
||||
@@ -1397,9 +1405,10 @@ function appendLog(taskId, message) {
|
||||
const el = document.getElementById('detailLogs');
|
||||
if (el) {
|
||||
const isErr = /error|failed|exception/i.test(message);
|
||||
const ts = new Date().toLocaleTimeString('zh-CN', {hour:'2-digit', minute:'2-digit', second:'2-digit'});
|
||||
const div = document.createElement('div');
|
||||
if (isErr) div.style.color = 'var(--bad)';
|
||||
div.textContent = message;
|
||||
div.innerHTML = `<span style="color:var(--muted);margin-right:10px;user-select:none">${ts}</span>${esc(message)}`;
|
||||
if (el.querySelector('[style*="加载中"], [style*="暂无"]')) el.innerHTML = '';
|
||||
el.appendChild(div);
|
||||
el.scrollTop = el.scrollHeight;
|
||||
|
||||
Reference in New Issue
Block a user