import logging import os from logging.handlers import TimedRotatingFileHandler def setup_logging(cfg: dict) -> None: log_cfg = cfg.get("logging", {}) if not log_cfg.get("enabled", True): return path = log_cfg.get("path", "/var/server-bot/bot.log") rotate_when = log_cfg.get("rotate_when", "W0") backup_count = int(log_cfg.get("backup_count", 8)) level = str(log_cfg.get("level", "INFO")).upper() os.makedirs(os.path.dirname(path), exist_ok=True) root = logging.getLogger() for handler in root.handlers: if isinstance(handler, TimedRotatingFileHandler) and handler.baseFilename == path: return handler = TimedRotatingFileHandler( path, when=rotate_when, interval=1, backupCount=backup_count, encoding="utf-8", utc=True, ) formatter = logging.Formatter("%(asctime)s\t%(levelname)s\t%(name)s\t%(message)s") handler.setFormatter(formatter) root.setLevel(level) root.addHandler(handler)