# 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") # 可以定义一个通用的错误处理装饰器或其他实用函数