2e9a0ebfb1
- [U] Обновление из репозитория: бэкап -> git pull --ff-only -> npm install -> миграции -> рестарт -> health-check; при провале миграций/health предлагает откат (git reset --hard + восстановление БД из свежего бэкапа). Текущая версия (git short-hash + subject) в шапке. - [M] Обслуживание БД: backend/scripts/db-maintain.js (node:sqlite) — integrity_check -> WAL checkpoint(TRUNCATE) -> VACUUM; VACUUM пропускается на битой БД. Авто-бэкап + стоп/старт. - Авто-прунинг бэкапов: Backup-Db хранит последних 10 (Prune-Backups), Copy-DbFrom вынесен общим (реюз в Restore-Db и откате обновления), запоминается путь последнего бэкапа. - Живые логи: отдельный tools/tail-logs.ps1 — раскраска уровней (ERROR/FATAL красным, WARN жёлтым, успех зелёным) вместо сырого tail; вынос из inline-команды (PS 5.1 quoting). - Экран «Сторож»: дашборд в рамке с перерисовкой — статус-маркер, счётчики проверок/ перезапусков, последнее событие; выход по клавише. Все .ps1 — UTF-8 BOM, парсинг OK; db-maintain протестирован на копии БД (10.7->10.5 МБ); рендер-смоук подтвердил выравнивание. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
29 lines
1.6 KiB
PowerShell
29 lines
1.6 KiB
PowerShell
param([string]$Path)
|
|
# LearnSpace — просмотр живых логов сервера с раскраской уровней.
|
|
# Запускается панелью (control-panel.ps1, пункт «Живые логи») в отдельном окне.
|
|
# ERROR/FATAL — красным, WARN — жёлтым, успех/INFO — зелёным/серым.
|
|
|
|
try { chcp 65001 > $null } catch {}
|
|
try { [Console]::OutputEncoding = [System.Text.UTF8Encoding]::new() } catch {}
|
|
try { $Host.UI.RawUI.WindowTitle = 'LearnSpace — живые логи' } catch {}
|
|
|
|
Write-Host 'Живые логи (закройте окно, чтобы прекратить). ERROR — красным, WARN — жёлтым.' -ForegroundColor Cyan
|
|
Write-Host ''
|
|
|
|
if (-not $Path -or -not (Test-Path $Path)) {
|
|
Write-Host ('Файл логов не найден: ' + $Path) -ForegroundColor Red
|
|
Write-Host 'Запустите сервер через панель — лог появится в backend/logs/server.log.' -ForegroundColor DarkGray
|
|
return
|
|
}
|
|
|
|
Get-Content -Path $Path -Wait -Tail 60 | ForEach-Object {
|
|
$line = $_
|
|
$c = 'Gray'
|
|
if ($line -match '(?i)(\berror\b|\bfatal\b|\bunhandled\b|\bexception\b|error:|✗|✖)') { $c = 'Red' }
|
|
elseif ($line -match '(?i)(\bwarn\b|\bwarning\b|\bdeprecat)') { $c = 'Yellow' }
|
|
elseif ($line -match '(?i)(\blistening\b|server running|\bstarted\b|\bready\b|✓)') { $c = 'Green' }
|
|
elseif ($line -match '(?i)(\binfo\b|\bdebug\b)') { $c = 'DarkGray' }
|
|
Write-Host $line -ForegroundColor $c
|
|
}
|
|
|