backend/fastapi/app/process/logger.py
2024-12-06 14:12:28 +09:00

56 lines
1.9 KiB
Python

import logging
import sys
from logging.handlers import TimedRotatingFileHandler
import os
from datetime import datetime
class CustomTimedRotatingFileHandler(TimedRotatingFileHandler):
def __init__(self, base_log_path, when="midnight", interval=1, backupCount=7):
self.base_log_path = base_log_path
# 초기화 시점에 파일 경로를 명시적으로 설정
self.update_log_path()
super().__init__(self.baseFilename, when=when, interval=interval, backupCount=backupCount)
def update_log_path(self):
current_time = datetime.now()
log_directory = os.path.join(
self.base_log_path,
current_time.strftime("%Y"),
current_time.strftime("%m")
)
log_filename = current_time.strftime("%d_allscore.log")
# 로그 파일 경로 설정
self.baseFilename = os.path.join(log_directory, log_filename)
# 디렉토리가 없으면 생성
if not os.path.exists(log_directory):
os.makedirs(log_directory)
def emit(self, record):
# 각 로그 기록 시점에서 경로를 다시 확인해 업데이트
self.update_log_path()
super().emit(record)
# 로거 설정
logger = logging.getLogger("allscore_logger")
logger.setLevel(logging.DEBUG)
# 핸들러 설정 (stdout으로 출력)
stream_handler = logging.StreamHandler(sys.stdout)
stream_handler.setLevel(logging.DEBUG)
# 로그 포맷 설정
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
stream_handler.setFormatter(formatter)
# 커스텀 파일 핸들러 설정
base_log_path = "/app/logs"
file_handler = CustomTimedRotatingFileHandler(base_log_path=base_log_path, when="midnight", interval=1, backupCount=7)
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(formatter)
# 핸들러를 로거에 추가
logger.addHandler(stream_handler)
logger.addHandler(file_handler)