# -*- coding: utf-8 -*- """ 日志配置模块 提供统一的日志格式和配置 """ import logging import os from pathlib import Path from datetime import datetime def setup_logger(config): """ 设置日志记录器 Args: config: 配置字典,包含日志相关配置 Returns: logger: 配置好的日志记录器 """ # 获取日志配置 log_level = config.get('log_level', 'INFO') log_base_dir = config.get('log_base_dir', 'logs') # 创建日志目录 log_dir = Path(log_base_dir) log_dir.mkdir(parents=True, exist_ok=True) # 创建日志文件名(包含时间戳) timestamp = datetime.now().strftime('%Y%m%d_%H%M%S') model_name = config.get('model_name', 'stden') log_filename = f"{model_name}_{timestamp}.log" log_path = log_dir / log_filename # 创建日志记录器 logger = logging.getLogger('STDEN') logger.setLevel(getattr(logging, log_level.upper())) # 清除现有的处理器 logger.handlers.clear() # 创建文件处理器 file_handler = logging.FileHandler(log_path, encoding='utf-8') file_handler.setLevel(getattr(logging, log_level.upper())) # 创建控制台处理器 console_handler = logging.StreamHandler() console_handler.setLevel(getattr(logging, log_level.upper())) # 创建格式化器 formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) # 设置格式化器 file_handler.setFormatter(formatter) console_handler.setFormatter(formatter) # 添加处理器 logger.addHandler(file_handler) logger.addHandler(console_handler) # 记录日志配置信息 logger.info(f"日志文件路径: {log_path}") logger.info(f"日志级别: {log_level}") return logger def get_logger(name='STDEN'): """ 获取已配置的日志记录器 Args: name: 日志记录器名称 Returns: logger: 日志记录器 """ return logging.getLogger(name)