DRRK/app/core/logging.py

24 lines
1.1 KiB
Python

from __future__ import annotations
import logging
_FORMAT = "%(asctime)s %(levelname)-5s [%(name)s] %(message)s"
def setup_logging(level: int = logging.INFO) -> None:
"""Единый формат логов для UI и джобы.
Логи пишутся в stderr — в Раисе их собирает платформа. Ключи шлюза и
заголовки запросов сюда не попадают никогда: клиенты логируют только
источник, путь, параметры, статус и длительность (см.
app/integrations/gateway.py).
"""
root = logging.getLogger()
if root.handlers:
# Streamlit перезапускает скрипт на каждый клик — не плодим хендлеры.
root.setLevel(level)
return
logging.basicConfig(level=level, format=_FORMAT)
# urllib3 на DEBUG пишет строки запросов — оставляем только предупреждения.
logging.getLogger("urllib3").setLevel(logging.WARNING)