You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Lang2SQL 프로젝트 전체에서 중앙화된 로깅 시스템을 구축하여 로깅 설정의 중복과 불일치 문제를 해결합니다. 기존에 5개 파일에서 각각 logging.basicConfig()를 호출하던 것을 중앙화된 모듈에서 한 번만 설정하도록 개선하고, 모든 모듈이 동일한 로깅 포맷과 설정을 공유할 수 있는 개선된 기능을 제시합니다.
왜 필요한가요? (Motivation / Use Case)
중복 호출 문제: cli/utils/logger.py, db_utils/logger.py, infra/monitoring/check_server.py, infra/observability/token_usage.py, infra/db/connect_db.py에서 각각 logging.basicConfig()를 중복 호출하여 불필요한 오버헤드 발생
포맷 불일치: 각 파일마다 다른 로깅 포맷을 사용하여 로그 일관성 부족
유지보수의 어려움: 로깅 설정 변경 시 여러 파일을 수정해야 하는 번거로움
디버깅의 어려움: 로그에서 어느 모듈에서 발생한 것인지 식별하기 어려움
제안하는 해결 방법 (Proposed Implementation)
중앙화된 로깅 모듈 생성: infra/logging/centralized_logger.py에서 모든 로깅 설정을 관리
통일된 포맷 적용: "%(asctime)s [%(levelname)s] %(name)s: %(message)s" 포맷으로 모든 로그 통일
중복 방지 메커니즘: 전역 변수 _logging_configured로 중복 설정 방지
환경변수 지원: LOG_LEVEL 환경변수로 로깅 레벨 동적 조정 가능
기존 파일 수정: 모든 기존 파일에서 logging.basicConfig() 제거하고 get_logger(__name__) 사용
대안 (Alternatives)
기존 logging 모듈 활용: Python 표준 logging 모듈의 설정 파일(logging.conf) 사용할 수 있을 것이라 예상됨
외부 라이브러리 도입: structlog, loguru 등 고급 로깅 라이브러리 사용
점진적 마이그레이션: 기존 코드를 유지하면서 새로운 모듈에만 중앙화된 로깅 적용하는 점진적 방식 활용
기능 설명 (Description)
logging.basicConfig()를 호출하던 것을 중앙화된 모듈에서 한 번만 설정하도록 개선하고, 모든 모듈이 동일한 로깅 포맷과 설정을 공유할 수 있는 개선된 기능을 제시합니다.왜 필요한가요? (Motivation / Use Case)
cli/utils/logger.py,db_utils/logger.py,infra/monitoring/check_server.py,infra/observability/token_usage.py,infra/db/connect_db.py에서 각각logging.basicConfig()를 중복 호출하여 불필요한 오버헤드 발생제안하는 해결 방법 (Proposed Implementation)
infra/logging/centralized_logger.py에서 모든 로깅 설정을 관리"%(asctime)s [%(levelname)s] %(name)s: %(message)s"포맷으로 모든 로그 통일_logging_configured로 중복 설정 방지LOG_LEVEL환경변수로 로깅 레벨 동적 조정 가능logging.basicConfig()제거하고get_logger(__name__)사용대안 (Alternatives)
추가 고려사항 (Additional Context)
logging.basicConfig()호출 제거로 초기화 오버헤드 감소