# utils/logger.py
import logging
import os
from logging.handlers import RotatingFileHandler
from config.settings import LogConfig

def setup_logger():
    """设置日志"""
    # 获取日志配置
    LOG_CONFIG = LogConfig.as_dict()
    
    # 创建日志目录
    log_dir = os.path.dirname(LOG_CONFIG["file"])
    if not os.path.exists(log_dir):
        os.makedirs(log_dir)
    
    # 设置日志级别
    log_level = getattr(logging, LOG_CONFIG["level"].upper(), logging.INFO)
    
    # 设置日志格式
    log_format = logging.Formatter(LOG_CONFIG["format"])
    
    # 创建根日志记录器
    root_logger = logging.getLogger()
    root_logger.setLevel(log_level)
    
    # 清除现有处理器
    for handler in root_logger.handlers[:]:
        root_logger.removeHandler(handler)
    
    # 添加控制台处理器
    console_handler = logging.StreamHandler()
    console_handler.setFormatter(log_format)
    root_logger.addHandler(console_handler)
    
    # 添加文件处理器
    file_handler = RotatingFileHandler(
        LOG_CONFIG["file"],
        maxBytes=10 * 1024 * 1024,  # 10MB
        backupCount=5
    )
    file_handler.setFormatter(log_format)
    root_logger.addHandler(file_handler)
    
    # 设置第三方库的日志级别
    logging.getLogger("werkzeug").setLevel(logging.WARNING)
    logging.getLogger("urllib3").setLevel(logging.WARNING)
    
    return root_logger

def get_logger(name):
    """
    获取指定名称的日志记录器
    
    Args:
        name (str): 日志记录器名称,通常为模块名称
        
    Returns:
        logging.Logger: 日志记录器实例
    """
    return logging.getLogger(name)