let logMonitorEl = null; let logMonitorStatus = true; async function logMonitor() { if (logMonitorStatus) setTimeout(logMonitor, opts.logmonitor_refresh_period); if (!opts.logmonitor_show) return; logMonitorStatus = false; let res; try { res = await fetch('/sdapi/v1/log?clear=True'); } catch {} if (res?.ok) { logMonitorStatus = true; if (!logMonitorEl) { logMonitorEl = document.getElementById('logMonitorData'); logMonitorEl.onscrollend = () => { const at_bottom = logMonitorEl.scrollHeight <= (logMonitorEl.scrollTop + logMonitorEl.clientHeight); if (at_bottom) logMonitorEl.parentElement.style = ''; }; } if (!logMonitorEl) return; const at_bottom = logMonitorEl.scrollHeight <= (logMonitorEl.scrollTop + logMonitorEl.clientHeight); const lines = await res.json(); if (logMonitorEl && lines?.length > 0) logMonitorEl.parentElement.parentElement.style.display = opts.logmonitor_show ? 'block' : 'none'; for (const line of lines) { try { const l = JSON.parse(line); const row = document.createElement('tr'); row.style = 'padding: 10px; margin: 0;'; row.innerHTML = `
| Time | Level | Facility | Module | Message |
|---|