""" logger.py 로깅 설정 모듈 print() 대신 logging 모듈을 사용하여 일관된 로그 출력을 제공합니다. """ import logging import sys from typing import Optional def setup_logger(name: str = "opendrift", level: int = logging.INFO, log_format: Optional[str] = None) -> logging.Logger: """ 로거를 설정하고 반환합니다. Parameters ---------- name : str 로거 이름 (기본값: "opendrift") level : int 로그 레벨 (기본값: logging.INFO) log_format : str, optional 로그 포맷 (기본값: 표준 포맷) Returns ------- logging.Logger 설정된 로거 인스턴스 """ logger = logging.getLogger(name) if not logger.handlers: logger.setLevel(level) if log_format is None: log_format = '[%(asctime)s] %(levelname)s - %(message)s' handler = logging.StreamHandler(sys.stdout) handler.setLevel(level) handler.setFormatter(logging.Formatter(log_format, datefmt='%Y-%m-%d %H:%M:%S')) logger.addHandler(handler) return logger # 기본 로거 인스턴스 logger = setup_logger() def get_logger(name: str = None) -> logging.Logger: """ 모듈별 로거를 가져옵니다. Parameters ---------- name : str, optional 로거 이름. None이면 기본 로거 반환 Returns ------- logging.Logger 로거 인스턴스 """ if name is None: return logger return logging.getLogger(f"opendrift.{name}")