"""日志配置模块"""
import os
import logging
from logging.handlers import TimedRotatingFileHandler


def setup_logging(
    log_dir: str = "log",
    log_file: str = "app.log",
    level: int = logging.INFO,
    format_string: str = '%(asctime)s - %(levelname)s - %(message)s',
    when: str = "H",
    interval: int = 12,
    backup_count: int = 7
) -> None:
    """
    配置日志系统

    Args:
        log_dir: 日志目录
        log_file: 日志文件名
        level: 日志级别
        format_string: 日志格式
        when: 轮转时间单位 (S:秒, M:分, H:时, D:天, W:周)
        interval: 轮转间隔
        backup_count: 保留的备份文件数量
    """
    # 确保日志目录存在
    if not os.path.exists(log_dir):
        os.makedirs(log_dir)

    # 配置日志处理器
    handlers = [
        TimedRotatingFileHandler(
            os.path.join(log_dir, log_file),
            when=when,
            interval=interval,
            backupCount=backup_count,
            encoding='utf-8'
        ),
        logging.StreamHandler()
    ]

    # 配置日志
    logging.basicConfig(
        level=level,
        format=format_string,
        handlers=handlers
    )


def get_logger(name: str) -> logging.Logger:
    """
    获取日志记录器

    Args:
        name: 日志记录器名称，通常使用 __name__

    Returns:
        Logger 实例
    """
    return logging.getLogger(name)