import os
import traceback
from datetime import datetime
class Logger:
"""
로그를 기록하는 유틸리티 클래스
사용방법:
1. 일반 로그 기록
Logger.log("로그 메시지")
예) Logger.log("사용자가 로그인했습니다")
2. 예외 발생 시 로그 기록
try:
# 코드...
except Exception as e:
Logger.log("에러 메시지", error=e)
예) Logger.log("데이터 처리 중 오류 발생", error=e)
로그 파일 위치: ./logs/application_YYYY-MM-DD.log
로그 형식:
- 일반 로그: [YYYY-MM-DD HH:MM:SS] 메시지
- 에러 로그: [YYYY-MM-DD HH:MM:SS] 메시지
Exception: 에러메시지
Traceback: 스택트레이스
"""
LOG_DIRECTORY = "logs"
LOG_FILE_PREFIX = "application"
@classmethod
def setup(cls):
# 로그 디렉토리가 없으면 생성
if not os.path.exists(cls.LOG_DIRECTORY):
os.makedirs(cls.LOG_DIRECTORY)
@classmethod
def log(cls, message, error=None):
"""
로그를 파일에 기록하는 메서드
Args:
message (str): 기록할 로그 메시지
error (Exception, optional): 예외 객체. 기본값은 None
예시:
Logger.log("작업 시작")
try:
some_function()
except Exception as e:
Logger.log("작업 실패", error=e)
"""
cls.setup()
# 오늘 날짜로 로그 파일명 생성
today = datetime.now().strftime("%Y-%m-%d")
log_file = f"{cls.LOG_DIRECTORY}/{cls.LOG_FILE_PREFIX}_{today}.log"
# 현재 시간
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
try:
with open(log_file, 'a', encoding='utf-8') as f:
# 기본 메시지 작성
f.write(f"[{timestamp}] {message}\n")
# 에러가 있는 경우 에러 정보 작성
if error:
f.write(f"Exception: {str(error)}\n")
f.write(f"Traceback:\n{traceback.format_exc()}\n")
except Exception as e:
print(f"로그 작성 중 오류 발생: {str(e)}")
주요 로그 포인트 설명:
- 애플리케이션 시작/종료 시점
- 메인 윈도우 초기화 시점
- URL 등록 시점
- ManageSearchAdThread 시작 시점
- 애플리케이션 종료 처리 시점
- Mutex 체크 시점
- 각종 예외 발생 시점
이렇게 로그를 추가하면 다음과 같은 이점이 있습니다:
- 애플리케이션의 주요 동작 시점을 추적할 수 있습니다
- 오류 발생 시 정확한 위치와 원인을 파악할 수 있습니다
- 사용자의 주요 액션을 모니터링할 수 있습니다
필요한 경우 더 많은 로그 포인트를 추가하거나, 로그 레벨을 구분하여 더 상세한 로깅을 구현할 수 있습니다.
반응형