Some checks failed
SonarQube Analysis / SonarQube Scan (push) Has been cancelled
- H/F/I/O SS304/GRAPHITE/CS/CS 패턴에서 4개 구성요소 모두 표시 - 기존 SS304 + GRAPHITE → SS304/GRAPHITE/CS/CS로 완전한 구성 표시 - 외부링/필러/내부링/추가구성 모든 정보 포함 - 구매수량 계산 모달에서 정확한 재질 정보 확인 가능
88 lines
2.2 KiB
Python
88 lines
2.2 KiB
Python
"""
|
|
로깅 유틸리티 모듈
|
|
중앙화된 로깅 설정 및 관리
|
|
"""
|
|
import logging
|
|
import os
|
|
from logging.handlers import RotatingFileHandler
|
|
from typing import Optional
|
|
|
|
from ..config import get_settings
|
|
|
|
settings = get_settings()
|
|
|
|
|
|
def setup_logger(
|
|
name: str,
|
|
log_file: Optional[str] = None,
|
|
level: str = None
|
|
) -> logging.Logger:
|
|
"""
|
|
로거 설정 및 반환
|
|
|
|
Args:
|
|
name: 로거 이름
|
|
log_file: 로그 파일 경로 (선택사항)
|
|
level: 로그 레벨 (선택사항)
|
|
|
|
Returns:
|
|
설정된 로거 인스턴스
|
|
"""
|
|
logger = logging.getLogger(name)
|
|
|
|
# 이미 핸들러가 설정된 경우 중복 방지
|
|
if logger.handlers:
|
|
return logger
|
|
|
|
# 로그 레벨 설정
|
|
log_level = level or settings.logging.level
|
|
logger.setLevel(getattr(logging, log_level.upper()))
|
|
|
|
# 포맷터 설정
|
|
formatter = logging.Formatter(
|
|
'%(asctime)s - %(name)s - %(levelname)s - %(funcName)s:%(lineno)d - %(message)s'
|
|
)
|
|
|
|
# 콘솔 핸들러
|
|
console_handler = logging.StreamHandler()
|
|
console_handler.setFormatter(formatter)
|
|
logger.addHandler(console_handler)
|
|
|
|
# 파일 핸들러 (선택사항)
|
|
if log_file or settings.logging.file_path:
|
|
file_path = log_file or settings.logging.file_path
|
|
|
|
# 로그 디렉토리 생성
|
|
log_dir = os.path.dirname(file_path)
|
|
if log_dir and not os.path.exists(log_dir):
|
|
os.makedirs(log_dir, exist_ok=True)
|
|
|
|
# 로테이팅 파일 핸들러 (10MB, 5개 파일 유지)
|
|
file_handler = RotatingFileHandler(
|
|
file_path,
|
|
maxBytes=10*1024*1024, # 10MB
|
|
backupCount=5,
|
|
encoding='utf-8'
|
|
)
|
|
file_handler.setFormatter(formatter)
|
|
logger.addHandler(file_handler)
|
|
|
|
return logger
|
|
|
|
|
|
def get_logger(name: str) -> logging.Logger:
|
|
"""
|
|
로거 인스턴스 반환 (간편 함수)
|
|
|
|
Args:
|
|
name: 로거 이름
|
|
|
|
Returns:
|
|
로거 인스턴스
|
|
"""
|
|
return setup_logger(name)
|
|
|
|
|
|
# 애플리케이션 전역 로거
|
|
app_logger = setup_logger("tk_mp_app", settings.logging.file_path)
|