Читаемый вывод в консоли: цвета и перенос строк

Windows-консоль не разбирала ANSI и печатала их как мусор, поэтому цвет
был выключен целиком. Теперь разбор включается через WinAPI, а при неудаче
цвет молча отключается. Длинные сообщения переносятся по словам с отступом
под текст. Вывод Caddy уведён в файл - он забивал консоль сертификатами.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Vladimir Bryzgalov
2026-08-16 16:56:58 +05:00
co-authored by Claude Opus 5
parent 8ca3d73300
commit ec0e84935e
4 changed files with 204 additions and 7 deletions
+5 -4
View File
@@ -16,6 +16,7 @@ from fastapi.responses import JSONResponse
from fastapi.security import HTTPBearer
from app.config import ConfigError, Settings, load_settings
from app.console import setup_logging
from app.logbuffer import get as log_buffer
from app.logbuffer import install as install_log_buffer
from app.pipeline import ModelsMissing, Pipeline, to_wav16k
@@ -390,8 +391,7 @@ def run() -> None:
_setup_console()
install_log_buffer()
logging.basicConfig(level=logging.INFO,
format="%(asctime)s %(levelname)s %(name)s: %(message)s")
colored = setup_logging(logging.INFO)
if not settings.token:
print("\n В config.toml пустой токен - сервис никого не пустит."
@@ -414,9 +414,10 @@ def run() -> None:
f"\n Потоков: {settings.effective_threads()}"
f"\n Проверка: curl http://localhost:{settings.port}/health"
"\n Остановить: Ctrl+C\n")
# Windows-консоль не разбирает ANSI-последовательности и печатает их как мусор
# Красим только если разбор ANSI удалось включить: иначе консоль напечатает
# сами последовательности вместо цвета.
uvicorn.run(app, host=settings.host, port=settings.port, log_level="info",
use_colors=(os.name != "nt"))
use_colors=colored)
if __name__ == "__main__":