56 lines
1.9 KiB
Python
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)
|