import logging import os from datetime import datetime from pathlib import Path def setup_logger(name, log_file=None, level=logging.INFO): """设置日志记录器""" # 创建logs目录 logs_dir = Path("wxauto_logs") logs_dir.mkdir(exist_ok=True) # 如果没有指定日志文件,使用默认命名 if log_file is None: timestamp = datetime.now().strftime("%Y%m%d") log_file = logs_dir / f"{name}_{timestamp}.log" # 创建logger logger = logging.getLogger(name) logger.setLevel(level) # 避免重复添加handler if logger.handlers: return logger # 创建文件处理器 file_handler = logging.FileHandler(log_file, encoding='utf-8') file_handler.setLevel(level) # 创建控制台处理器 console_handler = logging.StreamHandler() console_handler.setLevel(level) # 创建格式器 formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(funcName)s:%(lineno)d - %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) file_handler.setFormatter(formatter) console_handler.setFormatter(formatter) # 添加处理器到logger logger.addHandler(file_handler) logger.addHandler(console_handler) return logger def get_logger(name): """获取已配置的logger""" return logging.getLogger(name)