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 }