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)