import os
import logging
from logging.handlers import RotatingFileHandler

import vs_log_macros  # 导入你的宏模块

def setup_app_logger(app_name: str, log_dir: str = "logs") -> logging.Logger:
    """
    配置并返回一个标准的 Logger，支持终端输出和文件滚动保存。
    """
    if not os.path.exists(log_dir):
        os.makedirs(log_dir)

    logger = logging.getLogger(app_name)
    logger.setLevel(logging.INFO)
    
    # 避免重复添加 Handler
    if not logger.handlers:
        log_file = os.path.join(log_dir, f"{app_name.lower()}.log")
        
        # 1. 终端输出
        console_handler = logging.StreamHandler()
        console_handler.setLevel(logging.INFO)
        
        # 2. 文件输出
        file_handler = RotatingFileHandler(
            log_file, maxBytes=10 * 1024 * 1024, backupCount=10, encoding='utf-8'
        )
        file_handler.setLevel(logging.INFO)
        
        # 设置格式
        formatter = logging.Formatter('[%(asctime)s] [%(levelname)s] %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
        console_handler.setFormatter(formatter)
        file_handler.setFormatter(formatter)
        
        logger.addHandler(console_handler)
        logger.addHandler(file_handler)

    # ==========================================
    # 核心：将这个专属 Logger 注入到宏！
    # 这样整个系统里所有的 VSC_INFO 都会输出到你的 app_name.log 里！
    # ==========================================
    vs_log_macros.set_active_logger(logger)

    return logger