/
dsboikov
/
aiBoardRoom
Обзор
Документация
Войти
/
dsboikov
/
aiBoardRoom
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
src/utils/logger.py
57 строк
2 KB
Денис
Grok added
03 авг 2026, 16:31
03 авг 2026, 16:31
255c2e0
Код
Авторство
О чём код?
"""Rotating file + console logging setup.""" from __future__ import annotations import logging from logging.handlers import RotatingFileHandler from pathlib import Path from config import LOG_BACKUP_COUNT, LOG_LEVEL, LOG_MAX_BYTES, LOGS_PATH # ASCII logger namespace — Russian APP_NAME breaks Windows console encodings _LOGGER_ROOT = "ai-board-room" def setup_logging(level: str | None = None) -> logging.Logger: """Configure root logger with rotating file and console handlers.""" LOGS_PATH.mkdir(parents=True, exist_ok=True) log_level = getattr(logging, (level or LOG_LEVEL).upper(), logging.INFO) root = logging.getLogger() if root.handlers: root.setLevel(log_level) return logging.getLogger(_LOGGER_ROOT) root.setLevel(log_level) formatter = logging.Formatter( "%(asctime)s | %(levelname)-8s | %(name)s | %(message)s", datefmt="%Y-%m-%d %H:%M:%S", ) file_handler = RotatingFileHandler( Path(LOGS_PATH) / "app.log", maxBytes=LOG_MAX_BYTES, backupCount=LOG_BACKUP_COUNT, encoding="utf-8", ) file_handler.setFormatter(formatter) file_handler.setLevel(log_level) root.addHandler(file_handler) console = logging.StreamHandler() console.setFormatter(formatter) console.setLevel(log_level) root.addHandler(console) logging.getLogger("httpx").setLevel(logging.INFO) logger = logging.getLogger(_LOGGER_ROOT) logger.debug("Logging initialized at %s → %s", log_level, LOGS_PATH / "app.log") return logger def get_logger(name: str | None = None) -> logging.Logger: """Return a named child logger under the app namespace.""" if name: return logging.getLogger(f"{_LOGGER_ROOT}.{name}") return logging.getLogger(_LOGGER_ROOT)