# utils.py

import logging
import uuid
import os
import datetime


def setup_logging(log_file_path):
    """
    配置应用程序的日志系统。
    日志将输出到控制台和指定的日志文件。
    :param log_file_path: 日志文件的完整路径。
    """
    # 确保日志目录存在
    log_dir = os.path.dirname(log_file_path)
    if not os.path.exists(log_dir):
        os.makedirs(log_dir)

    # 创建一个根日志器
    logger = logging.getLogger()
    logger.setLevel(logging.INFO)  # 设置最低日志级别为INFO

    # 移除已有的处理器,防止重复日志
    if logger.handlers:
        for handler in logger.handlers[:]:
            logger.removeHandler(handler)

    # 创建一个文件处理器,用于将日志写入文件
    file_handler = logging.FileHandler(log_file_path, encoding="utf-8")
    file_handler.setLevel(logging.INFO)  # 文件处理器级别为INFO

    # 创建一个控制台处理器,用于将日志输出到控制台
    console_handler = logging.StreamHandler()
    console_handler.setLevel(logging.INFO)  # 控制台处理器级别为INFO

    # 定义日志格式
    formatter = logging.Formatter(
        "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
    )
    file_handler.setFormatter(formatter)
    console_handler.setFormatter(formatter)

    # 将处理器添加到日志器
    logger.addHandler(file_handler)
    logger.addHandler(console_handler)

    logging.info(f"日志系统已配置,日志将写入 {log_file_path}")


def generate_uuid():
    """
    生成一个基于时间戳和随机数的唯一UUID字符串。
    :return: 32位小写UUID字符串。
    """
    # UUID4是随机生成,适合作为唯一ID
    return str(uuid.uuid4())


def get_current_timestamp():
    """
    获取当前时间的标准格式字符串。
    :return: 例如 "2023-10-27 10:00:00"
    """
    return datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")


# 可以定义一个通用的错误处理装饰器或其他实用函数