[예측] - OpenDrift Python API 서버 및 스크립트 추가 (prediction/opendrift/) - 시뮬레이션 상태 폴링 훅(useSimulationStatus), 로딩 오버레이 추가 - HydrParticleOverlay: deck.gl 기반 입자 궤적 시각화 레이어 - OilSpillView/LeftPanel/RightPanel: 시뮬레이션 실행·결과 표시 UI 개편 - predictionService/predictionRouter: 시뮬레이션 CRUD 및 상태 관리 API - simulation.ts: OpenDrift 연동 엔드포인트 확장 - docs/PREDICTION-GUIDE.md: 예측 기능 개발 가이드 추가 [CCTV/항공방제] - CCTV 오일 감지 GPU 추론 연동 (OilDetectionOverlay, useOilDetection) - CCTV 안전관리 감지 기능 추가 (선박 출입, 침입 감지) - oil_inference_server.py: Python GPU 추론 서버 [관리자] - 관리자 화면 고도화 (사용자/권한/게시판/선박신호 패널) - AdminSidebar, BoardMgmtPanel, VesselSignalPanel 신규 컴포넌트 [기타] - DB: 시뮬레이션 결과, 선박보험 시드(1391건), 역할 정리 마이그레이션 - 팀 워크플로우 v1.6.1 동기화 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
69 lines
1.5 KiB
Python
69 lines
1.5 KiB
Python
"""
|
|
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}")
|