import logging import os from datetime import datetime class Logger: def __init__(self, log_dir): self.log_dir = log_dir os.makedirs(log_dir, exist_ok=True) # 日志文件路径 log_file = os.path.join(log_dir, "training.log") # 创建日志记录器 self.logger = logging.getLogger("FedKD") self.logger.setLevel(logging.DEBUG) # 文件处理器(包含详细信息) file_handler = logging.FileHandler(log_file) file_formatter = logging.Formatter( "%(asctime)s - %(levelname)s - %(message)s" ) file_handler.setFormatter(file_formatter) # 控制台处理器(简洁输出) console_handler = logging.StreamHandler() console_formatter = logging.Formatter("%(message)s") console_handler.setFormatter(console_formatter) self.logger.addHandler(file_handler) self.logger.addHandler(console_handler) def info(self, message): self.logger.info(message) def debug(self, message): self.logger.debug(message) def warning(self, message): self.logger.warning(message) def error(self, message): self.logger.error(message) def create_run_dir(base_dir="runs"): timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") run_dir = os.path.join(base_dir, timestamp) os.makedirs(run_dir, exist_ok=True) return run_dir