| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -3,27 +3,29 @@ import sys | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import logging | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import traceback | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					from datetime import datetime | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					from brep2sdf.config.default_config import get_default_config | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					class BRepLogger: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    _instance = None | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					     | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    def __new__(cls, log_level=logging.INFO, console_level=logging.INFO,  | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                file_level=logging.DEBUG, include_trace=True): | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    def __new__(cls, config=None): | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        if cls._instance is None: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            cls._instance = super().__new__(cls) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            cls._instance._initialize_logger(log_level, console_level,  | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                          file_level, include_trace) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            cls._instance._initialize_logger(config) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return cls._instance | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					     | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    def _initialize_logger(self, log_level, console_level, file_level, include_trace): | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    def _initialize_logger(self, config=None): | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        """初始化日志记录器""" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        if config is None: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            config = get_default_config() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					             | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        # 创建logs目录 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        log_dir = 'logs' | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        log_dir = config.log.log_dir | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        os.makedirs(log_dir, exist_ok=True) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					         | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        # 创建logger | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        self.logger = logging.getLogger('BRepLogger') | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        self.logger.setLevel(log_level) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        self.logger.setLevel(getattr(logging, config.log.log_level.upper())) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					         | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        # 如果logger已经有处理器,则返回 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        if self.logger.handlers: | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -40,12 +42,12 @@ class BRepLogger: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        current_time = datetime.now().strftime('%Y%m%d_%H%M%S') | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        log_file = os.path.join(log_dir, f'brep2sdf_{current_time}.log') | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        file_handler = logging.FileHandler(log_file, encoding='utf-8') | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        file_handler.setLevel(file_level) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        file_handler.setLevel(getattr(logging, config.log.file_level.upper())) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        file_handler.setFormatter(detailed_formatter) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					         | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        # 创建控制台处理器 (简略日志) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        console_handler = logging.StreamHandler(sys.stdout) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        console_handler.setLevel(console_level) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        console_handler.setLevel(getattr(logging, config.log.console_level.upper())) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        console_handler.setFormatter(simple_formatter) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					         | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        # 添加处理器 | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -53,11 +55,10 @@ class BRepLogger: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        self.logger.addHandler(console_handler) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					         | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        # 保存配置 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        self.include_trace = include_trace | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        self.include_trace = True  # 默认包含调用栈 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					         | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        # 记录初始信息 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        self.logger.info("BRep Logger initialized") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        if file_level <= logging.DEBUG: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        self.logger.debug(f"Log file: {log_file}") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					     | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    def debug(self, msg): | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -87,20 +88,9 @@ class BRepLogger: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        """异常信息""" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        self.logger.exception(msg) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					def setup_logger(name='BRepLogger', log_level='INFO', console_level='INFO',  | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                file_level='DEBUG', include_trace=True): | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					def setup_logger(config=None): | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    """创建logger的便捷函数""" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    # 直接从logging获取对应的级别常量 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    log_level = getattr(logging, log_level.upper()) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    console_level = getattr(logging, console_level.upper()) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    file_level = getattr(logging, file_level.upper()) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					     | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return BRepLogger(log_level, console_level, file_level, include_trace) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return BRepLogger(config) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					# 使用默认配置创建全局logger实例 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					logger = setup_logger( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    log_level='DEBUG',      # 记录所有级别日志 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    console_level='DEBUG',  # 控制台显示所有日志 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    file_level='DEBUG',    # 文件记录所有日志 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    include_trace=True     # 包含调用栈信息 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					logger = setup_logger() |